问题描述
我正在使用一些关于杀菌剂使用情况的数据,其中包括年份,杀菌剂,使用量,以及熊猫DataFrame中的一些不相关的列。它看起来有点像:
I'm using some data on fungicide usage which has the Year, Fungicide, Amount used, along with some irrelevant columns in a panda DataFrame. It looks somewhat like:
Year, State, Fungicide, Value
2011, California, A, 12879
2011, California, B, 29572
2011, Florida, A, 8645
2011, Florida, B, 19573
2009, California, A, 8764
2009, California, B, 98643,
...
我想从中得到一张总计随着时间的推移使用杀真菌剂,绘制每种杀真菌剂的线(以不同的颜色)。我已经使用.groupby来获得每年使用的每种杀真菌剂的总量:
What I want from it is a single plot of total fungicide used over time, with a line plotted for each individual fungicide (in a different colour). I've used .groupby to get the total amount of each fungicide used each year:
apple_fplot = df.groupby(['Year','Fungicide'])['Value'].sum()
我想绘制的值,如:
This gives me the values I want to plot, something like:
Year, Fungicide, Value
...
2009, A, 128635
B, 104765
2011, A, 154829
B, 129865
现在我需要绘制它,以便每个杀真菌剂(A,B,...)在单个图上是一个单独的线 >
Now I need to plot it so that each fungicide (A, B, ...) is a separate line on a single plot of Value over Time
有没有办法做到这一点,而不是全部分离出来?原谅我的无知,我是python的新手,并且对它仍然很熟悉。
Is there a way of doing this without separating it all out? Forgive my ignorance, I'm new to python and am still getting familiar with it.
推荐答案
legend
和 xticks
,你可以
For a clean solution that properly prints legend
and xticks
, you could
apple_fplot = df.groupby(['Year','Fungicide'])['Value'].sum()
plot_df = apple_fplot.unstack('Fungicide').loc[:, 'Value']
plot_df.index = pd.PeriodIndex(plot_df.index.tolist(), freq='A')
plot_df.plot()
对于 subplots
,只是将相应的关键字
设置为 True
:
For subplots
, just set the respective keyword
to True
:
plot_df.plot(subplots=True)
得到:
这篇关于分组多个值,并绘制结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!