[英]mpld3 does not display dates on x axis correctly
我正在使用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轴上。 有没有办法克服它?
在创建HTML图形之前,添加以下行以指定它是日期轴:
ax.xaxis_date()
上面的答案是正确的。
例如,如果您只是通过日期
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.