【问题标题】:Plot groupby data using secondary_y axis使用 secondary_y 轴绘制 groupby 数据
【发布时间】:2014-04-22 02:31:38
【问题描述】:

我想绘制 12 张图(每月一张图),包括左侧 y 轴上的 'A''B' 列和右侧的 'C' 列。

下面的代码将所有内容绘制在左侧。

import pandas as pd
index=pd.date_range('2011-1-1 00:00:00', '2011-12-31 23:50:00', freq='1h')
df=pd.DataFrame(np.random.rand(len(index),3),columns=['A','B','C'],index=index)

df2 = df.groupby(lambda x: x.month)
for key, group in df2:
    group.plot()

如何分隔列并使用类似这样的东西:group.plot({'A','B':style='g'},{'C':secondary_y=True})

【问题讨论】:

    标签: python matplotlib plot pandas


    【解决方案1】:

    您可以捕获 Pandas plot() 命令返回的坐标轴,然后再次使用它在右侧坐标轴上专门绘制C

    index=pd.date_range('2011-1-1 00:00:00', '2011-12-31 23:50:00', freq='1h')
    df=pd.DataFrame(np.random.randn(len(index),3).cumsum(axis=0),columns=['A','B','C'],index=index)
    
    df2 = df.groupby(lambda x: x.month)
    for key, group in df2:
        ax = group[['A', 'B']].plot()
        group[['C']].plot(secondary_y=True, ax=ax)
    

    要在单个图例中获取所有行,请参见: Legend only shows one label when plotting with pandas

    【讨论】:

    • 你知道为什么每个月的 x 刻度都不同吗?特别是二月。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2019-01-17
    相关资源
    最近更新 更多