小编典典

使用 Matplotlib 在 Python 中绘制时间

all

我有一个格式为 (HH:MM:SS.mmmmmm) 的时间戳数组和另一个浮点数数组,每个数组对应于时间戳数组中的一个值。

我可以使用 Matplotlib 在 x 轴上绘制时间和在 y 轴上绘制数字吗?

我试图这样做,但不知何故它只接受浮点数组。我怎样才能让它绘制时间?我必须以任何方式修改格式吗?


阅读 169

收藏
2022-07-08

共1个答案

小编典典

更新

自 matplotlib 版本 3.5
以来,
此答案已过时。该plot函数现在直接处理日期时间数据。见https://matplotlib.org/3.5.1/api/_as_gen/matplotlib.pyplot.plot_date.html

不鼓励使用 plot_date。这种方法的存在是出于历史原因,将来可能会被弃用。

应使用 plot 直接绘制类似日期时间的数据。

如果您需要将纯数字数据绘制为 Matplotlib 日期格式或需要设置时区,请在绘图前调用 ax.xaxis.axis_date /
ax.yaxis.axis_date。请参阅 Axis.axis_date。


旧的,过时的答案:

您必须首先将时间戳转换为 Pythondatetime对象(使用datetime.strptime)。然后用于date2num将日期转换为
matplotlib 格式。

使用
绘制日期和值plot_date

import matplotlib.pyplot
import matplotlib.dates

from datetime import datetime

x_values = [datetime(2021, 11, 18, 12), datetime(2021, 11, 18, 14), datetime(2021, 11, 18, 16)]
y_values = [1.0, 3.0, 2.0]

dates = matplotlib.dates.date2num(x_values)
matplotlib.pyplot.plot_date(dates, y_values)

在此处输入图像描述

2022-07-08