【问题标题】:multiple axis not starting at zero多轴不从零开始
【发布时间】:2021-02-13 16:29:02
【问题描述】:

我绘制了一个带有多个轴的图,有几个问题:

  1. 为什么左 y 轴不是从零开始的。 (我的意思是零点 不在 y 轴的开头)。

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

  3. 如何为 y-axix 添加小网格(红色的 (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()
    

我的数据

[

图表:

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    如果你想从零开始,你可以用'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()
    

    【讨论】:

    • ax2.grid(which='minor', axis='y', alpha=0.4) .. 我试图添加这条线,但小网格没有出现。
    • ax2.set_ylim(0,62) .. 如果我想将数字增加 5 .... 0,5,10,15,20,...,65 怎么办?
    • 您是否复制并执行了所有代码? ax2.set_ylim(0,65) 应该这样做。
    • 是的,我执行了代码,它可以工作.. 但是如果我更灵活一些,例如 y 刻度随着 step=3 或 7 而增加
    • 我添加了行 ax2.yaxis.set_ticks([0,3,6,....,66]) 并且它有效..还有其他方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多