mpld3无法正确显示x轴上的日期

5
我正在使用matplotlib从数据库绘制大型数据集,并使用mpld3将图形传递到浏览器。在x轴上有日期。问题在于,当我不使用mpld3进行绘制时,绘图效果很好,但是当我使用它时,日期显示不正确。
以下是我的代码:
date1 = '2015-04-22 20:28:50'
date2 = '2015-04-23 19:42:09'

db = Base('monitor').open()
result_set = db.select(['MeanVoltage','time'],"time>=start and time<=stop",  start=date1, stop=date2)

V = [float(record.MeanVoltage) for record in result_set if record != 0]
Date = [str(record.time) for record in result_set]


dates = [datetime.datetime.strptime(record, '%Y-%m-%d %H:%M:%S') for record in Date]
dates = matplotlib.dates.date2num(dates)

fig, ax = plt.subplots()
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S' ))

plt.gcf().autofmt_xdate()
ax.plot(dates,V)
#mpld3.fig_to_html(fig)
#mpld3.show(fig)
plt.show()

展示完美的情节如下: 第一个图

现在,如果我仅注释掉这行:

plt.show()

并取消注释这两个:

mpld3.fig_to_html(fig)
mpld3.show(fig)

这张图片在浏览器中显示如下: 第二张图片

可以看到,唯一的问题就是x轴上日期的显示方式。 有没有什么办法可以解决这个问题呢?

2个回答

0
在创建HTML图之前,请添加以下行以指定它是一个日期轴:
ax.xaxis_date()

0

上述答案是正确的。

如果你只是在传递日期,例如

df["Date"][0] = "2018-11-23"

然后,您还可以通过以下本地mpl格式传递它,而无需使用date2num创建序数值。

df["Date"] = [dt.datetime.strptime(d, '%Y-%m-%d') for d in df["Date"]]
ax.plot(df["Dates"].tolist(), some_y_value_list)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接