Pyqtgraph,绘制时间序列

4
我试图使用pyqtgraph绘制时间序列。我已经阅读了这篇文章这篇文章这篇文章。但我不确定如何正确使用它。
我的绘图是一个绘图部件,我是这样使用的:
graph.plot(aerosol_data, pen=pg.mkPen(color=colors[count], width=1, style=QtCore.Qt.SolidLine), axisItems={'bottom': TimeAxisItem(orientation='bottom')})

TimeAxisItem的定义如下:

class TimeAxisItem(pg.AxisItem):
    def __init__(self, *args, **kwargs):
       super().__init__(*args, **kwargs)

    def tickStrings(self, values, scale, spacing):
        # PySide's QTime() initialiser fails miserably and dismisses args/kwargs
        return [useful_values_dict['useful_data']['data']['ISO_dates']]

其中ISO_dates是一个以ISO格式表示的日期和时间列表

我也尝试过这个:

graph.plotItem.plot(aerosol_data, pen=pg.mkPen(color=colors[count], width=1, style=QtCore.Qt.SolidLine), axisItems={'bottom': TimeAxisItem(orientation='bottom')})

但是没有效果(坐标轴仍然是数字)。

接着我尝试使用DateTimeAxis.py:

date_axis = pg.DateAxisItem('bottom', pen=None, linkView=None, parent=None, maxTickLength=-1, showValues=True)
date_axis.tickStrings(useful_values_dict['useful_data']['data']['timestamp_dates'],1, 1)

但是我遇到了一个错误:
File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\DateAxisItem.py", line 161, in tickStrings
format_strings.append(x.strftime(tick_spec.format))
AttributeError: 'NoneType' object has no attribute 'format'
1个回答

8

我终于解决了我的问题,这其实很简单。

我只需要这样初始化我的图形小部件:

    date_axis = pg.graphicsItems.DateAxisItem.DateAxisItem(orientation = 'bottom')
    self.graph = pg.PlotWidget(axisItems = {'bottom': date_axis})

并以此方式绘制我的数据:

    graph.plot(x = useful_values_dict['useful_data']['data']['timestamp_dates'],
               y = useful_values_dict['useful_data']['data'][raw_header],
               pen=pg.mkPen(color=colors[count],width=1,style=QtCore.Qt.SolidLine))

使用x数据作为时间戳数组。

谢谢!


1
我希望我能够找回我的账户密码和电子邮件,但是我不记得用来提问的账号的信息。 - beni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接