每天在单个图形中覆盖事件

时间:2019-04-15 18:49:23

标签: python pandas matplotlib

我有2个熊猫数据框,其中包含条目和日期。我试图用不同的颜色在一张图表上为每一天绘制当天的条目数:

def plotMultiple(dfList):
    for df in dfList:
        times = pd.DatetimeIndex(df.Date)
        grouped = df.groupby([times.year, times.month]).size()
        ax = grouped.plot(kind='line', x='Date', figsize=(50, 5))

df1 = pd.DataFrame({"Date":[
"21.11.2018 14:44",
"21.12.2018 14:43",
"22.12.2018 14:42",
"25.12.2018 14:51"]}
)
df1.head()

df2 = pd.DataFrame({"Date":[
"20.12.2018 14:44",
"21.12.2018 14:44",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"23.12.2018 14:51"]}
)

plotMultiple([df2,df1])

如果我传递一个包含一个数据帧的数组,这将非常有效,但是一旦存在多个,就会发生问题。该图不是从第一个条目开始,而是从某个随机点开始:

Example

可以看出,该图在第一个条目处既不开始也不结束。我怎样才能使它从11月21日到12月25日?我可以同时使用pyplot和seaborn。

1 个答案:

答案 0 :(得分:0)

使用集合中的Counter来计算每个日期的所有出现次数。

import pandas as pd
import os
import matplotlib.pyplot as plt

from collections import Counter

df = pd.DataFrame({"Date":[
"20.12.2018 14:44",
"21.12.2018 14:44",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"23.12.2018 14:51"]}
)

date_count = Counter(df['Date'])

plt.plot(date_count.keys(), date_count.values())
plt.xticks(rotation=45)

# Repeat with different dataset and use `plt.plot()` at the end

# plt.plot(date_count.keys(), date_count.values())
# plt.xticks(rotation=45)

plt.show()

enter image description here