来自DataFrame的一张图上的多个图

梦境

我有以下数据框:

    Food               Men     Women    Year
0   Apples as fruit    89.18    90.42   1994
1   Berries            84.21    81.73   1994
2   Grapes             88.79    88.13   1994
3   Melons             80.74    84.96   1994
4   Oranges, Total     85.66    89.77   1994
5   Other citrus fruit 79.82    80.64   1994
6   Stone fruit        88.95    89.55   1994
7   Tropical fruit     74.61    80.40   1994
8   Apples as fruit    90.86    91.21   1994
9   Berries            88.57    88.29   2004
10  Grapes             88.55    90.14   2004
11  Melons             79.72    80.99   2004
12  Oranges, Total     84.46    88.07   2004
13  Other citrus fruit 73.74    69.60   2004
14  Stone fruit        94.02    87.94   2004
15  Tropical fruit     74.58    85.85   2004

我正在尝试使用“食物”作为不同的线条颜色来创建“水果与年份或时间”的线图。按照这里的答案并使用groupby,我尝试了以下操作:

for i, group in fruits.groupby('Food'):
   plt.figure()
   group.plot(x='Year', y='Men', title=str(i))

但这会产生8条带有一行的图形,或者每个水果一个图形。我想要一个图,每个水果用不同的线。我将如何使用pandas,matplotlib或numpy做到这一点?另外,当前列中的年列,因此该图包括诸如1996、1998、2000等的年份,而我没有相关数据。我的意思是使其范围像1993-1994或2003-2004。有什么办法可以忽略它们吗?

认真的重要性

您将需要在循环外部创建图形。然后最好使用ax关键字参数为数据框图提供一个matplotlib轴

import pandas as pd
import matplotlib.pyplot as plt

year=[1994,1994,1994,2000,2000,2000,2006,2006,2006]
fr = ["Apple", "Banana", "Cherry"]*3
men = [1,6,6,3,5,8,7,2,7]
fruits =pd.DataFrame({"Year" : year, "Food" : fr, "Men" : men})

fig, ax = plt.subplots()
for i, group in fruits.groupby('Food'):
    group.plot(x='Year', y='Men', ax=ax, label=group["Food"].iloc[0])
ax.set_title("Food")
ax.set_ylabel("Men")
#optionally only set ticks at years present in the years column
ax.set_xticks(fruits["Year"].unique())

plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章