I solved this problem with adding "updateZoom()" function.
Code revised is shown as below.
And another problem occurred as the console message below.
What is the reason?
Would you please help me?
Console message :
*C:\Python27\lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py:841:
RuntimeWarning: overflow encountered in double_scalars*
* xScale = -bounds.height() / dif*
*C:\Python27\lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py:847:
RuntimeWarning: invalid value encountered in double_scalars*
* xRange = [x * xScale - offset for x in self.range]*
*C:\Python27\lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py:871:
RuntimeWarning: invalid value encountered in double_scalars*
* x = (v * xScale) - offset*
*Process finished with exit code 0*
Revised code :
# -*- coding: utf-8 -*-
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
from pyqtgraph.dockarea import *
app = QtGui.QApplication([])
gui = QtGui.QMainWindow()
area = DockArea()
gui.setCentralWidget(area)
gui.resize(1000,500)
gui.setWindowTitle("Scroll and Zoomed Plot")
dockCtrl = Dock("Plot Control", size=(200, 500))
dockCtrl.setFixedWidth(200)
area.addDock(dockCtrl, 'left')
winCtrl = pg.LayoutWidget()
dockCtrl.addWidget(winCtrl)
restartBttn = QtGui.QPushButton("Restart")
restartBttn.setMinimumSize(100,40)
winCtrl.addWidget(restartBttn)
def RestartPlot():
global dataRnd,ptrDataRnd
timer.stop()
dataRnd = np.empty(100)
ptrDataRnd = 0
timer.start(50)
restartBttn.clicked.connect(RestartPlot)
dockScroll = Dock("Scrolling plot", size=(800,250))
area.addDock(dockScroll, 'right')
winScroll = pg.GraphicsWindow()
dockScroll.addWidget(winScroll)
dockZoom = Dock("Zoomed plot", size=(800,250))
area.addDock(dockZoom, 'right')
winZoom = pg.GraphicsWindow()
dockZoom.addWidget(winZoom)
area.moveDock(dockScroll, 'top', dockZoom)
plotScroll = winScroll.addPlot()
plotScroll.setDownsampling(mode='peak')
plotScroll.setClipToView(True)
curveScroll = plotScroll.plot()
dataRnd = np.empty(100)
ptrDataRnd = 0
def updateScroll():
global dataRnd, ptrDataRnd
dataRnd[ptrDataRnd] = np.random.normal()
ptrDataRnd += 1
if ptrDataRnd >= dataRnd.shape[0]:
tmp = dataRnd
dataRnd = np.empty(dataRnd.shape[0] * 2)
dataRnd[:tmp.shape[0]] = tmp
curveScroll.setData(dataRnd[:ptrDataRnd])
LinRegionItem = pg.LinearRegionItem([0,100])
LinRegionItem.setZValue(-10)
plotScroll.addItem(LinRegionItem)
plotZoom = winZoom.addPlot()
curveZoom = plotZoom.plot(dataRnd, pen=(255,255,255,200))
def updatePlot():
plotZoom.setXRange(*LinRegionItem.getRegion(), padding=0)
def updateRegion():
LinRegionItem.setRegion(plotZoom.getViewBox().viewRange()[0])
LinRegionItem.sigRegionChanged.connect(updatePlot)
plotZoom.sigXRangeChanged.connect(updateRegion)
updatePlot()
# added lines
def updateZoom():
curveZoom.setData(dataRnd[:ptrDataRnd])
# update all plots
def update():
updateScroll()
# added lines
updateZoom()
timer = pg.QtCore.QTimer()
timer.timeout.connect(update)
timer.start(50)
gui.show()
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
--
You received this message because you are subscribed to the Google Groups
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyqtgraph/77cd6e55-1089-4a43-9524-bc49f03b88a6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.