生成具有多个图例项的单独线图

时间:2018-02-26 05:19:18

标签: python pandas matplotlib

我已生成以下DataFrame(此处显示的一个小子集),并希望为每个区域生成单独的线图,每个图表都有多个图例项目(来自Cat的“绿色”,“红色”和“棕色”柱)。 x轴将使用'Date'和y轴'Val'。

我对Python / Pandas比较陌生,并且已经尝试解决这个问题好几天了,没有成功。有没有人对如何遍历区域并对Cat列中的值进行分组有任何想法?许多人已经发布了类似的问题,但他们不需要在对第二列的值进行分组之前为列(例如区域)生成单独的图。

Zone  Cat    Date     Val
A    green  198711    44
A    red    198711    47
A    brown  198711    40
A    green  198808    52
A    red    198808    53
A    brown  198808    49
A    green  199002    57
A    red    199002    59
A    brown  199002    53
B    red    198711    46
B    green  198711    43
B    brown  198711    45
B    red    198808    48
B    green  198808    48
B    brown  198808    51
B    red    199002    50
B    green  199002    49
B    brown  199002    51

2 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用groupby Cat列。

df.groupby('Cat`).plot(x='Date', y='Val')

我不太确定你想要什么样的情节,但这就是这个想法。

更新

我想我现在明白了。您需要区域的不同图表和类别图表的不同图表

您可以遍历Zone,然后使用上面的groupby

for zone in set(df['Zone']):
    df[df['Zone']==zone].groupby('Cat`).plot(x='Date', y='Val')

答案 1 :(得分:0)

使用 seaborn

import seaborn as sns

sns.factorplot(x="Date", y="Val", hue="Cat", col="Zone", data=df)

output plot

更新'保存一系列个别factorplots':

for zone in df.Zone.unique():
    fig = sns.factorplot(x="Date", y="Val", hue="Cat", col="Zone", data=df[df.Zone==zone])
    fig.savefig("zone_{0}.png".format(zone))