我想创建一个多系列线图,显示数据框架元素的出现如何随时间变化:
我有两个列表,我加入了一个数据帧:
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来做到这一点
您可以尝试:
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
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代码,可能会有一些语法错误但它会让你知道如何解决你的问题以及如何编码。