我有以下数据框:
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] 删除。
我来说两句