Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用多个图例项生成单独的线图_Python_Pandas_Matplotlib - Fatal编程技术网

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

Python 使用多个图例项生成单独的线图,python,pandas,matplotlib,Python,Pandas,Matplotlib,我已经生成了以下数据框(这里显示的是一个小子集),并希望为每个区域生成一个单独的线图,每个图都有多个图例项(“绿色”、“红色”和“棕色”来自Cat列)。x轴将使用“日期”和y轴“Val” 我对Python/Pandas比较陌生,已经尝试解决这个问题好几天了,但都没有成功。有人对如何遍历区域和对Cat列中的值进行分组有什么想法吗?许多人对此提出了类似的问题,但在对第二列的值进行分组之前,他们不需要为一列(例如分区)生成单独的绘图 Zone Cat Date Val A gre

我已经生成了以下数据框(这里显示的是一个小子集),并希望为每个区域生成一个单独的线图,每个图都有多个图例项(“绿色”、“红色”和“棕色”来自Cat列)。x轴将使用“日期”和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

一种方法是使用
Cat

df.groupby('Cat`).plot(x='Date', y='Val')
我不太确定你想要什么样的情节,但这就是想法


更新:

我想我现在更明白了。您需要分区的不同绘图,以及类别的这些绘图上的不同图形

您只需遍历
区域
,然后像上面那样使用
groupby

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

使用seaborn

import seaborn as sns

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

更新“保存一系列单个工厂批次”:

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

你在找3个单独的条形图吗?对不起,我误用了“绘图”这个词。为了澄清,我想为每个区域生成单独的图,每个图都有三个线图(“红色”、“绿色”和“棕色”),来自Cat。哈哈,我不确定哪个词表示哪个…:我想你想要3个正方形[]每只猫有一条线?我想这就是我给出的第二个代码所做的…不,我在寻找Lambda使用Seaborn FactoryPlot演示的输出类型。Factorplot对于一些区域来说是不错的,但是我的数据集有100多个。我正试图找到一种方法来输出每个图形——一旦我能得到生成图形的基本代码。谢谢,这用最少的代码就可以完成这项工作。看看是否可以扩展代码以保存一系列单独的factorplot,这会很有趣。