我将数据存储在以下结构的数组中,
[[1293606162197, 0, 0], [1293605477994, 63, 0], [1293605478057, 0, 0], [1293605478072, 2735, 1249], [1293606162213, 0, 0], [1293606162229, 0, 0]]
第一列是纪元时间(in ms),第二列是y1,第三列是y2。我 需要一个在x轴y1和y2左,右 y轴上都有时间的图。
我一直在仔细阅读文档,但找不到任何方法来 显示我的x轴刻度,以显示日期和时间,例如“ 28/12 16:48”,即 “ date / month hour:min”。所有文档帮助我的是 仅显示日期,但这不是我想要的。任何帮助将不胜感激。
我希望这有帮助。我总是很难过matplotlib的日期。Matplotlib需要一种浮动 格式,该格式是从纪元以来的几天。辅助函数num2date以及date2numpython 内置datetime函数可用于来回转换。此 示例取消了格式化业务。您可以使用将任何绘图上的轴更改为日期轴。 set_major_formatter.
set_major_formatter
import numpy as np from matplotlib import pyplot as plt from matplotlib import dates import datetime a = np.array([ [1293605162197, 0, 0], [1293605477994, 63, 0], [1293605478057, 0, 0], [1293605478072, 2735, 1249], [1293606162213, 0, 0], [1293606162229, 0, 0]]) d = a[:,0] y1 = a[:,1] y2 = a[:,2] # convert epoch to matplotlib float format s = d/1000 ms = d-1000*s # not needed? dts = map(datetime.datetime.fromtimestamp, s) fds = dates.date2num(dts) # converted # matplotlib date format object hfmt = dates.DateFormatter('%m/%d %H:%M') fig = plt.figure() ax = fig.add_subplot(111) ax.vlines(fds, y2, y1) ax.xaxis.set_major_locator(dates.MinuteLocator()) ax.xaxis.set_major_formatter(hfmt) ax.set_ylim(bottom = 0) plt.xticks(rotation='vertical') plt.subplots_adjust(bottom=.3) plt.show()