使用pandas创建matplotlib多系列线图

问题描述 投票:2回答:2

我想创建一个多系列线图,显示数据框架元素的出现如何随时间变化:

我有两个列表,我加入了一个数据帧:

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来做到这一点

python pandas matplotlib line
2个回答
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

enter image description here


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代码,可能会有一些语法错误但它会让你知道如何解决你的问题以及如何编码。

© www.soinside.com 2019 - 2024. All rights reserved.