使用多个图例项生成单独的折线图

2024-04-26 06:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经生成了下面的数据帧(这里显示了一个小的子集),并希望为每个区域生成一个单独的线图,每个图都有多个图例项(“绿色”、“红色”和“棕色”来自Cat列)。x轴将使用'Date'和y轴'Val'。你知道吗

我对Python/Pandas比较陌生,已经尝试解决这个问题好几天了,但都没有成功。有没有人知道如何遍历区域并对Cat列中的值进行分组?许多人对此提出了类似的问题,但他们不需要在对第二列的值进行分组之前为一列(如Zone)生成单独的绘图。你知道吗

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

Tags: 数据区域zonedatevalgreenred子集
2条回答

使用seaborn。你知道吗

import seaborn as sns

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

output plot

更新'保存一系列单独的工厂图':

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))

一种方法是使用groupbyCat。你知道吗

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')

相关问题 更多 >