繁体   English   中英

使用 PyQtGraph 绘制日期时间对象

[英]Plotting Datetime objects with 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_()

在 git 上使用自定义 AxisItem 的工作示例: pg_time_axis.py

如果使用 PyQt5,请将__main__函数中的 import 更改为from PyQt5 import QtGui

日期时间轴缩放 1 日期时间轴缩放 2

PS:看到 Luke 提到的PR最终合并真是太好了。

正如您所发现的,pyqtgraph 不支持使用日期时间对象进行绘图。 您需要在绘图之前将这些转换为数值。

对于静态缩放,您还可以使用AxisItem.setTicks()自定义轴上显示的文本。

如果您希望能够缩放轴,那么您需要创建一个覆盖tickValuestickStringsAxisItem子类。 您可以在此处查看文档字符串: https : //github.com/pyqtgraph/pyqtgraph/blob/develop/pyqtgraph/graphicsItems/AxisItem.py#L661

..作为一个例子,有一个开放的 PR 尝试你在这里做的事情: https : //github.com/pyqtgraph/pyqtgraph/pull/74

pyqtgraph 现在原生支持日期时间格式: https ://pyqtgraph.readthedocs.io/en/latest/graphicsItems/dateaxisitem.html?highlight=DateAxisItem

这很简单,如果您在 x 轴上有时间戳,只需执行以下操作:

axis = DateAxisItem()
plot.setAxisItems({'bottom':axis})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM