多轴不从零开始

2024-05-26 17:44:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我画了一个具有多轴的图,有几个问题:

  1. 为什么左侧y轴未从零开始转动。(我指的是零点 不是在y轴的开始处)

  2. 我只想要x轴的主网格(每周的主网格线),但是代码添加了一个mjor y轴的网格也是如此

  3. 如何为y轴(红色网格(ax2))添加次要网格

  4. 我想将x轴标签(日期)的颜色更改为黑色

    import matplotlib.pyplot as plt
    Hits= pd.read_excel("stackoverflow_example.xlsx", sheet_name="data")
    
    fig=plt.figure(figsize=(20,10))
    
    ax=fig.add_subplot(111, label="1")
    ax2=fig.add_subplot(111, label="2", frame_on=False)
    
    ax.bar(Hits['Date'], Hits['Total'], width=0.35, color="b" )
    ax.set_ylabel('Hits', color="b",size=16)
    ax.yaxis.set_label_position('right') 
    ax.tick_params(axis='y', colors="b")
    
    ax.tick_params(axis='x', colors="b", rotation=45)
    ax.yaxis.tick_right()
    
    ax2.plot(Hits['weeks'], Hits['Cases'], linewidth= 3.5, color="Red")
    ax2.set_ylabel("Cases", color="Red",size=16)
    ax2.tick_params(axis='y', colors="Red", size=16)
    ax2.xaxis.set_ticks_position('top')
    
    major_ticks = np.arange(0, 10, 1)
    ax.set_xticks(major_ticks)
    ax.grid(which='major', alpha=0.5)
    
    plt.show()
    

我的数据

[Data

图表:

enter image description here


Tags: 网格sizefigpltredparamsaxlabel
1条回答
网友
1楼 · 发布于 2024-05-26 17:44:26

如果要从零开始,可以使用“ax2.set_ylim()”来完成。之后,可以指定轴网的轴。如果颜色为黑色,则可以设置color='k'

import matplotlib.pyplot as plt

fig=plt.figure(figsize=(20,10))

ax=fig.add_subplot(111, label="1")
ax2=fig.add_subplot(111, label="2", frame_on=False)

ax.bar(Hits['Date'], Hits['Total'], width=0.35, color="b" )
ax.set_ylabel('Hits', color="b",size=16)
ax.yaxis.set_label_position('right') 
ax.tick_params(axis='y', colors="b")

ax.tick_params(axis='x', colors="k", rotation=45)
ax.yaxis.tick_right()

ax2.plot(Hits['weeks'], Hits['Cases'], linewidth= 3.5, color="Red")
ax2.set_ylabel("Cases", color="Red",size=16)
ax2.tick_params(axis='y', colors="Red", size=16)
ax2.xaxis.set_ticks_position('top')
ax2.set_ylim(0,62) # update
major_ticks = np.arange(0, 10, 1)
ax.set_xticks(major_ticks)
ax.grid(which='major', axis='x', alpha=0.5) #update
ax2.grid(which='major', axis='y', alpha=0.5) # update

plt.show()

enter image description here

相关问题 更多 >

    热门问题