【发布时间】:2015-07-02 17:02:22
【问题描述】:
为了减少绘制 gui 更新的时间,我设置了 setClipToView(True),以节省 CPU 时间来绘制图表中不必要的(看不见的)部分。我的代码如下。
import pyqtgraph as pg
from pyqtgraph.Qt import QtGui
from PySide.QtCore import QTime
import sys
import numpy as np
import time
from collections import deque
app = QtGui.QApplication([])
grams = deque()
penColor = pg.mkPen(color=(0,0,0),width=2)
pg.setConfigOption('background','w')
pg.setConfigOption('foreground','k')
pg.setConfigOptions(antialias=True)
view = pg.GraphicsView()
outerLayout = pg.GraphicsLayout()
outerLayout.layout.setSpacing(0)
view.setCentralItem(outerLayout)
view.show()
l2 = outerLayout.addLayout()
lowerGraph = l2.addPlot(name = "lower")
lowerGraph.showGrid(x=True,y=True)
lowerGraph.setClipToView(True)
lowerCurve = lowerGraph.plot(pen = penColor)
def update(grams):
x = [item['x'] for item in grams]
yLower = [item['y'] for item in grams]
lowerGraph.setXRange(0,x[-1]+20)
lowerCurve.setData(x=x, y=yLower)
QtGui.QApplication.processEvents()
i = 0
j = 0.0
while i < 4:
gram = np.random.uniform(0,51,size=1)
grams.append({'x':j,'y':gram[0]})
update(grams)
i += 1
j += 1000
time.sleep(0.1)
lowerCurve.clear()
x = [item['x'] for item in grams]
y = [item['y'] for item in grams]
lowerGraph.setXRange(0,x[-1]+20)
lowerCurve = lowerGraph.plot(x=x,y=y,pen = penColor)
QtGui.QApplication.instance().exec_()
当我注释掉 setToCliptoView(True) 数据的最后一个元素时,数据的最后一个元素也被绘制出来,但其他方式将其从绘制中丢弃。
我猜这是一个错误。 感谢您的时间。 问候, 乌波尔
【问题讨论】: