在pyqtgpraph中,是否有一种自动平移到图形末尾最后一个值的方法?

2024-06-14 05:58:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从事一个Python UI项目,我正在将实时数据绘制到pyqtgraph小部件(我正在使用1hz频率对图形进行实时数据绘制)。这是我第一个使用Python和pyqtgraph的项目,所以我仍在努力学习,到目前为止,对于原型来说一切都很好

我的问题是,当我开始绘图时,一段时间后,随着绘制线向右延伸,视图自动平移以跟随数据,数据开始累积,最终会落在后面,绘制数据线的末端延伸到屏幕外。它继续以一致的速度向右平移,但不再显示最新数据。我知道autopan函数将当前平均值的视图居中。例如,如果我当时在第200个数据点,我在一个图的中心看到第100个值,在一个图的末尾看到第150个值,但我需要的是在图的末尾看到第200个值

我使用pandas和PYQT Designer iu file for widgets将CSV文件中的值转换为数据帧,用于绘制的代码如下所示:

//////////////////////some other code later//////////////////////////


self.f = pd.read_csv('test_serial.csv')
    self.fd = DataFrame(self.f, columns=['PACKET_TYPE ','TEMP'])

    # Creating Telemetry variables for graphs
    # TODO Create variable for every telemetry value
    self.TEMP = self.fd.TEMP
    self.PACKET_TYPE = self.fd.PACKET_TYPE

    self.textBrowser.append(self.fd.to_string())

    if (self.PACKET_TYPE == 'C').any(): 
        self.c_graph.setLimits(maxXRange=10, maxYRange=100)
        self.c_graph.setLabel(axis='left', text='c_temp_value')
        self.c_graph.showGrid(x=True, y=True)
        self.c_graph.setBackground('w')

        self.c_graph.plot(self.TEMP, symbol='t1', pen='b', symbolPen='g', symbolBrush=0.2, clear=True)

我还发现它有一个自定义的自动平移工具,但不太了解它,无法在我的项目中实现它:https://gitlab.com/taurus-org/taurus_pyqtgraph/-/tree/main/taurus_pyqtgraph

我在看这个https://pyqtgraph.readthedocs.io/en/latest/graphicsItems/viewbox.html时想出了一个临时解决方案

我添加了以下几行:

self.total_rows = self.fd[self.fd.columns[0]].count()
self.c_Pressure.setLimits(xMin=self.total_rows-50 ,xMax=self.total_rows)

但现在的问题是,我无法返回并查看过去的值,因为视图已修复,现在唯一的问题是这个


Tags: 数据项目self视图trueforpackettype