2015-04-01 359 views
2

我是PyQtGraph的新手,需要帮助绘制x轴上的日期时间对象,这可以轻松地用matplotlib完成。任何帮助,将不胜感激。用PyQtGraph绘制日期时间对象

作为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_() 

回答

0

正如你已经发现,pyqtgraph不支持与datetime对象绘制。在绘图之前,您需要将它们转换为数值。

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

如果您希望能够缩放轴,则需要制作一个AxisItem子类,该子类将覆盖tickValuestickStrings。你可以在这里看到的文档字符串:https://github.com/pyqtgraph/pyqtgraph/blob/develop/pyqtgraph/graphicsItems/AxisItem.py#L661

..和作为一个例子,有一个开放的PR试图你在这里做什么:https://github.com/pyqtgraph/pyqtgraph/pull/74

+0

嗨卢克。你可能有这样的例子吗?我已经能够根据日期时间重命名花车,但我需要它根据用户的缩放级别自动调整 – RicDavimes 2015-04-07 07:28:44

+0

我向答案添加了更多信息。 – Luke 2015-04-07 21:48:45