【发布时间】:2020-05-12 06:52:19
【问题描述】:
我希望使用 matplotlib 在条形图中绘制一些数据。绘图的 x 值应该是 datetime.datetime 对象,以便 matplotlib 可以使用它们。如果我使用以下方法生成时间值,它会起作用:
import matplotlib.pyplot as plt
import datetime
x = [datetime.datetime(2010, 12, 1, 10, 0),
datetime.datetime(2011, 1, 4, 9, 0),
datetime.datetime(2011, 5, 5, 9, 0)]
y = [4, 9, 2]
ax = plt.subplot(111)
ax.bar(x, y, width=10)
ax.xaxis_date()
plt.show()
产生这个情节:
但是,如果我使用以下方法,它不起作用:
import matplotlib.pyplot as plt
import datetime
dates = ["2020-05-11 18:25:37","2020-05-11 18:25:40","2020-05-11 18:25:43",
"2020-05-11 18:25:46","2020-05-11 18:25:49"]
X = []
for date in dates:
X.append(datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S'))
Y = [1, 3, 4, 6, 4]
ax = plt.subplot(111)
ax.bar(X, Y, width=10)
ax.xaxis_date()
plt.show()
做出这种可憎的事:
我显然在这里遗漏了一些东西,但在我看来,结果应该是相同的:
datetime.datetime(2010, 12 ,1 ,10, 0)
datetime.datetime.strptime('2010-12-01 10:00:00','%Y-%m-%d %H:%M:%S')
【问题讨论】:
-
一开始,所有指定的数据都是'2020-05-11',所以X轴是基于天的,所以只有一个条形图。
-
谢谢你的回复,我明白你的意思了。你知道一种改变 x 轴的方法,使分辨率以秒为单位。
标签: python matplotlib