Ric*_*mes 9 python datetime pyqtgraph
我是 PyQtGraph 的新手,需要帮助在 x 轴上绘制日期时间对象,这可以使用 matplotlib 轻松完成。任何帮助,将不胜感激。
作为 Id 想要做的简单版本,请参见下面我想绘制的日期时间对象,该对象显示为 x 轴上的刻度。
代码抛出错误,因为这无法完成。
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import datetime
datetimes = ['2014-10-01 00:00:00', '2014-10-02 00:00:00', '2014-10-03 00:00:00']
x = [datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S') for i in datetimes]
y = [1,2,3]
win = pg.GraphicsWindow(title = 'plotting')
p1 = win.addPlot(row=1, col=0, title = 'test')
p1.plot(x,y)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
Run Code Online (Sandbox Code Playgroud)
pyqtgraph 现在原生支持 DateTime 格式:https://pyqtgraph.readthedocs.io/en/latest/graphicsItems/dateaxisitem.html ?highlight=DateAxisItem
这非常简单,如果 x 轴上有时间戳,只需执行以下操作:
axis = DateAxisItem()
plot.setAxisItems({'bottom':axis})
Run Code Online (Sandbox Code Playgroud)
正如您所发现的,pyqtgraph 不支持使用日期时间对象进行绘图。您需要在绘图之前将它们转换为数值。
对于静态缩放,您还可以使用AxisItem.setTicks()
自定义轴上显示的文本。
如果您希望能够缩放轴,那么您需要创建一个AxisItem
覆盖tickValues
和 的子类tickStrings
。您可以在此处查看文档字符串:https://github.com/pyqtgraph/pyqtgraph/blob/develop/pyqtgraph/graphicsItems/AxisItem.py#L661
..作为一个例子,有一个开放的 PR 尝试您在这里所做的事情:https ://github.com/pyqtgraph/pyqtgraph/pull/74