Чтобы сократить время построения графика для обновления графического интерфейса, я установил setClipToView(True), чтобы сэкономить время процессора при построении ненужной (невидимой) части графика. Мой код выглядит следующим образом.
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), последний элемент данных также отображается, но, наоборот, он отбрасывается от его построения.
Я думаю, это ошибка. Спасибо за уделенное время. С уважением, Упол.