首页 > 解决方案 > 在 MatplotLib 中绘制日期和小时

问题描述

我的数据看起来像:

Date        Hour    Count1          Count2          Count3
2019-03-12  0       2459416         2459384         2459416
2019-03-12  1       1735044         1735094         1735044
2019-03-12  2       1137516         1137523         1137516
2019-03-12  3       813602          813603          813602
2019-03-12  4       728658          728637          728658

并这样持续了几天。我真的很喜欢 Excel 中日期 + 小时的格式,但我不知道如何在 Matplotlib 中实现这一点。我尝试将 Date 和 Hour 结合起来创建一个 datetime 列,但是很难使用 date 的 Int 值。我也喜欢当它们分开时,Excel 在 Y 轴上给我的干净格式。

在此处输入图像描述

标签: pythonmatplotlib

解决方案


以下内容适用于当前的 matplotlib 版本。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates


t = np.arange("2019-03-11 00:00", "2019-03-13 08:00", dtype=np.datetime64)
x = np.cumsum(np.random.randn(len(t)))

fig, ax = plt.subplots()

ax.plot(t,x)

ax.xaxis.set_major_locator(mdates.HourLocator(12))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%b-%d"))

ax.xaxis.set_minor_locator(mdates.HourLocator(np.arange(0,24,2)))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%H"))

ax.tick_params(which="major", axis="x", pad=14, size=2)
ax.tick_params(which="minor", axis="x", labelsize=8)

plt.show()

在此处输入图像描述


推荐阅读