使用secondary_y轴绘制groupby数据

3 投票
2 回答
2141 浏览
提问于 2025-04-17 22:35

我想画12个图(每个月一个图),左边的y轴上显示列 'A''B',右边的y轴上显示列 '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}) 呢?

2 个回答

0

现在,你只需要这样做

for key, group in df2:
    group.plot(secondary_y='C')
7

你可以获取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

如果你想把所有的线条放在一个图例里,可以查看这个链接:图例在用Pandas绘图时只显示一个标签

撰写回答