Ich möchte die X-Achse von mehreren pyqtgraph Plots synchronisieren. Wenn der Benutzer die X-Achse mit Mausinteraktionen neu skaliert (z. B. Scroll-Rad, während sich die Maus auf der x-Achse befindet), möchte ich allen anderen Plots dieselben Änderungen zuweisen. Also, wie mache ich das?pyqtgraph: Synchronisieren der Skalierung von Achsen in verschiedenen Plots
Ich habe einen minimierten Code von einem grundlegenden Beispiel unten abgeleitet.
Muss ich die viewRangeChanged()
Funktionen von w1
und w2
überschreiben?
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph.console
import numpy as np
from pyqtgraph.dockarea import *
win = QtGui.QMainWindow()
area = DockArea()
win.setCentralWidget(area)
win.resize(1000,500)
win.setWindowTitle('pyqtgraph example: dockarea')
d1 = Dock("Dock1")
d2 = Dock("Dock2")
area.addDock(d1, 'bottom')
area.addDock(d2, 'bottom', d1)
w1 = pg.PlotWidget(title="Dock 1 plot")
w1.plot(np.random.normal(size=100))
d1.addWidget(w1)
w2 = pg.PlotWidget(title="Dock 2 plot")
w2.plot(np.random.normal(size=100))
d2.addWidget(w2)
win.show()
## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
Diese Frage hat eine here mit einer anderen Antwort auf diese Frage oben folgen.