导出时间序列图

时间:2019-12-11 12:51:42

标签: python pandas matplotlib time-series seaborn

我正在运行以下代码以在Python中导出.png文件:

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('ticks')

plt.figure(figsize=(30,15))
ax = ts['Item'].plot(lw = 10)
ax.set_xlim(pd.Timestamp('2019-09-01'), pd.Timestamp('2019-12-12'))
plt.xticks (rotation=45)
plt.title('Time Series of submitted items',fontsize = 30)
plt.tight_layout()
plt.savefig('TimeSeries.png',format="png")

导出的.png文件为空。

ts dataframe包含三列,并按日期分组。 致电head,我得到以下信息:

Submit date time    Item        Status
2019-01-09          2           2
2019-01-10          224         224
2019-01-11          196         196
2019-01-12          337         337
2019-02-09          9           9

我已将plt.show()放在plt.savefig()之后,但仍然遇到此问题。除此之外,我想知道用pd.Timestamp显式定义日期范围是否明智,还是我应该格式化提交日期时间列。

2 个答案:

答案 0 :(得分:0)

确定您的日期范围内的数据吗? (您提供的示例中不是这种情况)。您可能有混合的日期格式。

否则,以下代码段应该有效:

ax = df.plot(x='Submit date time', y='Item', lw=10, figsize=(30, 15))
ax.set_xlim('2019-01-01', '2019-12-12')
plt.xticks(rotation=45)
plt.title('Time Series of submitted items', fontsize=30)
plt.tight_layout()
plt.show()

请注意,您不必专门格式化/转换set_xlim中的日期。

答案 1 :(得分:0)

以下代码为我正确绘制。我认为问题是plot命令没有给plot函数提供足够的信息。参见[数据框图] [1]。另外,原始代码的xlim命令是从9月vs 1月开始的。

- name: Configure masters
  hosts: master
  roles:
    - master