我有一个格式为 (HH:MM:SS.mmmmmm) 的时间戳数组和另一个浮点数数组,每个数组对应于时间戳数组中的一个值。
我可以使用 Matplotlib 在 x 轴上绘制时间,在 y 轴上绘制数字吗?
我正在尝试,但不知何故它只接受浮点数数组。我怎样才能让它绘制时间?我必须以任何方式修改格式吗?
原文由 randomThought 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个格式为 (HH:MM:SS.mmmmmm) 的时间戳数组和另一个浮点数数组,每个数组对应于时间戳数组中的一个值。
我可以使用 Matplotlib 在 x 轴上绘制时间,在 y 轴上绘制数字吗?
我正在尝试,但不知何故它只接受浮点数数组。我怎样才能让它绘制时间?我必须以任何方式修改格式吗?
原文由 randomThought 发布,翻译遵循 CC BY-SA 4.0 许可协议
您还可以使用 pyplot.plot 绘制时间戳、值对(在从它们的字符串表示中解析它们之后)。 (使用 matplotlib 版本 1.2.0 和 1.3.1 进行测试。)
例子:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
结果图像:
这与散点图相同:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
生成类似于此的图像:
原文由 moooeeeep 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答937 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
更新:
自 matplotlib version 3.5 以来, 此答案已过时。
plot
函数现在直接处理日期时间数据。请参见 https://matplotlib.org/3.5.1/api/_as_gen/matplotlib.pyplot.plot_date.html旧的,过时的答案:
您必须首先将时间戳转换为 Python
datetime
对象(使用datetime.strptime
)。然后使用date2num
将日期转换为 matplotlib 格式。使用
plot_date
绘制日期和值: