使用secondary_y轴绘制groupby数据

时间:2014-03-17 00:24:55

标签: python matplotlib plot pandas

我想绘制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})

1 个答案:

答案 0 :(得分:4)

您可以捕获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)

enter image description here

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