matplotlib - pandas - 在subploted数字中没有xxel和xticks用于双轴

时间:2016-02-07 03:30:52

标签: python pandas matplotlib plot subplot

我有一个类似的问题,之前已经回答了。但是,它与Pandas包的使用不同。

以下是我之前的问题:matplotlib - No xlabel and xticks for twinx axes in subploted figures

所以,我最后一个问题就是为什么在使用这个Python代码时它没有显示第一行图的xlabel和xticks。

两个注释:

  1. 我还使用了subplots代替gridspec但结果相同。
  2. 如果您取消注释此代码中任何注释行,这与在每个图表中使用轴上的Pand相关,则xlabel和xticks将消失!
  3. import matplotlib.pyplot as plt
    import matplotlib.gridspec as gspec
    import numpy as np
    import pandas as pd
    from math import sqrt
    
    fig = plt.figure() 
    gs = gspec.GridSpec(2, 2)
    gs.update(hspace=0.7, wspace=0.7)
    ax1 = plt.subplot(gs[0, 0])
    ax2 = plt.subplot(gs[0, 1])
    ax3 = plt.subplot(gs[1, 0])
    ax4 = plt.subplot(gs[1, 1])
    
    
    x1 = np.linspace(1,10,10)
    
    
    ax12 = ax1.twinx()
    ax1.set_xlabel("Fig1")
    ax12.set_xlabel("Fig1")
    ax1.set_ylabel("Y1")
    ax12.set_ylabel("Y2")
    # pd.Series(range(10)).plot(ax=ax1)
    ax12.plot(x1, x1**3)
    
    
    
    
    ax22 = ax2.twinx()
    ax2.set_xlabel("Fig2")
    ax22.set_xlabel("Fig2")
    ax2.set_ylabel("Y3")
    ax22.set_ylabel("Y4")
    # pd.Series(range(10)).plot(ax=ax2)
    ax22.plot(x1, x1**0.5)
    
    
    ax32 = ax3.twinx()
    ax3.set_xlabel("Fig3")
    ax32.set_xlabel("Fig3")
    ax3.set_ylabel("Y5")
    ax32.set_ylabel("Y6")
    # pd.Series(range(200)).plot(ax=ax3)
    
    
    
    ax42 = ax4.twinx()
    ax4.set_xlabel("Fig4")
    ax42.set_xlabel("Fig4")
    ax4.set_ylabel("Y7")
    ax42.set_ylabel("Y8")
    # pd.Series(range(10)).plot(ax=ax42)
    
    
    
    plt.subplots_adjust(wspace=0.8, hspace=0.8)
    plt.show()
    

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,因为我正在混合使用matplotlib和熊猫制作的地块。

您不应使用Pandas进行绘图,这是您可以替换的方法:

pd.Series(range(10)).plot(ax=ax42)

使用

ax42.plot(pd.Series(range(10))

答案 1 :(得分:0)

正如Scimonster上面提到的那样,当我在创建双轴之前绘制所有大熊猫时它起作用了。

我在twinx中几乎没有来自Pandas Dataframe对象的图(x,t图)。我在开始绘图之前创建了单独的列表,然后在绘制第一个pandas图之后用它们进行绘图。

总结我的工作流程是 1.为twinx图创建列表 2.打开图并用正常轴绘制所有大熊猫图。 3.创建双轴 4.在双轴上绘制列表

幸运的是,这个流程对我有用