2015-04-01 5 views
2

Я новичок в PyQtGraph и мне нужна помощь в построении объектов datetime по оси x, которые можно легко сделать с помощью matplotlib. Любая помощь будет оценена по достоинству.Построение объектов Datetime с помощью PyQtGraph

Как простая версия того, как Id, как показано ниже, где я хочу построить объекты datetime, отображаемые как тики по оси 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, который переопределяет tickValues и tickStrings. Вы можете увидеть здесь строки документации: https://github.com/pyqtgraph/pyqtgraph/blob/develop/pyqtgraph/graphicsItems/AxisItem.py#L661

..И в качестве примера, есть открытая PR, который пытается что вы делаете здесь: https://github.com/pyqtgraph/pyqtgraph/pull/74

+0

Привет Люк. Возможно, у вас есть пример этого? Я смог переименовать поплавки в соответствии с датой, но мне нужно, чтобы он автоматически настраивался на основе уровня масштабирования пользователя. – RicDavimes

+0

Я добавил немного больше информации в ответ. – Luke

 Смежные вопросы

  • Нет связанных вопросов^_^