python - 如何将日期绘制到 matplotlib
问题描述
嗨,我正在尝试将 x 轴更改为月轴,但似乎无法做到。
我找不到插入日期时间轴的方法,当我这样做时会遇到错误。
这是我的日期时间变量,基本上很简单,只想创建一个从 2020 年开始为期 1 年的每周计数器:
date = pd.date_range(start='2020-01-01', periods=52, freq='w')
这是我的情节代码:
cumm19=fcst2019.cumsum()
cumm20=fcst2020.cumsum()
cumm20w=fcst2020w.cumsum()
plt.axhline(y=cumm19['no._of_cases'][51], color='r', label= '2019 numbers (15,910)')
plt.plot(cumm20[:21], label ='2020 current')
plt.plot(cumm20[20:], label ='2020 predictions')
plt.plot(cumm20w[20:], label ='2020 worse case predictions')
plt.xlabel('Months')
plt.ylabel('Cumulative no. of cases')
plt.legend()
plt.show()
我如何将它们结合起来?
解决方案
如果您将 datetime 变量设置为数据框的索引,则 x 轴刻度会自动获取具有适当格式的日期标签:
import numpy as np # v 1.19.2
import pandas as pd # v 1.2.3
import matplotlib.pyplot as plt # v 3.3.4
import matplotlib.dates as mdates
# Create sample datasets
date = pd.date_range(start='2020-01-01', periods=52, freq='w')
fcst2020 = pd.DataFrame(dict(fcst=np.repeat([500, 750], [21, 31])), index=date)
fcst2020w = pd.DataFrame(dict(fcst=np.repeat([500, 600], [21, 31])), index=date)
cumm20 = fcst2020.cumsum()
cumm20w = fcst2020w.cumsum()
# Plot data
plt.plot(cumm20[:21], label ='2020 current')
plt.plot(cumm20[20:], label ='2020 predictions')
plt.plot(cumm20w[20:], label ='2020 worse case predictions')
plt.axhline(y=15910, color='r', label= '2019 numbers (15,910)', zorder=0)
plt.xlabel('Months')
plt.ylabel('Cumulative no. of cases')
plt.legend()
plt.show()
您可以使用matplotlib 日期 DateFormatter
自定义刻度标签的格式:
# Edit x-axis tick labels
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m'))
plt.show()
推荐阅读
- c# - 无法访问控制器外部的 userManager
- css - 固定容器位于身体的滚动顶部
- python - [-1] 和 [0] 在这里有什么用?
- bash - 使用 JSON 响应检查网站是否在线
- android - Google Play 中的内部测试不发送电子邮件
- file - 表单数据:.p7m 文件的内容类型错误
- html - Ionic 3 - 如何使段落的高度与幻灯片高度相同?
- c++ - 如何为 QTreeView 中的特定行制作自定义 QItemDelegate?
- nativescript - tns build android 《app-debug.apk》包太大
- c - sizeof(name) 和 sizeof 名称的区别