我想创建一个多系列线图,显示数据框架元素的出现如何随时间变化:
我有两个列表,我已加入数据框:
df = pd.DataFrame(
{'Date': datelist,
'Category': catlist
})
然后我将数据框分组以显示每次出现的计数:
df = df.groupby(['Date', 'Category']).size()
print df
这会返回如下所示的内容:
Date Category
13/02/2018 clean 2
suspicious 1
14/02/2018 clean 2
19/02/2018 clean 2
我现在想为每个类别类型创建一个多系列线图,显示计数如何随日期而变化。
我真的不确定如何使用matplotlib
来做到这一点答案 0 :(得分:2)
您可以尝试:
plot_df = df.unstack('Category')
plot_df.index = pd.PeriodIndex(plot_df.index.tolist(), freq='D')
plot_df.plot()
plt.show()
或subplot
:
plot_df.plot(subplots=True)
实施例: 对于数据框:
Date Category
13/02/2018 clean
13/02/2018 clean
13/02/2018 suspicious
14/02/2018 clean
14/02/2018 clean
19/02/2018 clean
19/02/2018 clean
14/02/2018 suspicious
13/02/2018 suspicious
14/02/2018 clean
答案 1 :(得分:0)
categories = df.Category.unique() #to find unique categories
f,plots = plt.subplots(1,categories.len()) #generate subplot grid (1xNo. of unique categories)
for i, category in enumerate(categories):
temp = df['Category'==category] #get data for each category
plots[i].scatter(temp['Date'],temp['Count']) #plot for that category
plt.show() #show final generated plot
上面是python代码,可能有一些语法错误,但它会让你知道如何解决你的问题以及如何编码。