Python PyQtGraphで複数グラフの位置や拡大縮小を同期(リンク)する方法を説明する。
結論
グラフ1とグラフ2が有るとして
- X軸を同期させるにはグラフ2.setXLink(グラフ1)
- Y軸を同期させるにはグラフ2.setYLink(グラフ1)
と記述する。グラフ1とグラフ2の順番は逆でも良い。
具体例
上がグラフ1、下がグラフ2。
コード
- .setXLink()でX軸をリンクする。
- .setYLink()でY軸をリンクする。
#!/usr/bin/env python3
import numpy as np
import sys
from PyQt6.QtWidgets import QApplication, QWidget
import pyqtgraph as pg
class GuiWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.サイン波を作成する()
self.グラフを描画する()
self.XY軸をリンクする()
def サイン波を作成する(self):
self.freq = 1 # サイン波の周波数 [Hz]
self.Ts = 0.001 # サンプリング周期 [秒]
self.Ns = 1000 # サンプリング点数 [個]
self.ns = np.arange(0, self.Ns) # サンプル番号
self.time = self.ns * self.Ts
self.sin = np.sin(2 * np.pi * self.freq * (self.ns * self.Ts))
def グラフを描画する(self):
self.graph = pg.GraphicsLayoutWidget(show=True)
self.グラフ1 = self.graph.addPlot(row=0, col=0)
self.グラフ1.plot(x=self.time, y=self.sin, pen=pg.mkPen((255,255,0), width=10))
self.グラフ2 = self.graph.addPlot(row=1, col=0)
self.グラフ2.plot(x=self.time, y=self.sin, pen=pg.mkPen((255,255,0), width=10))
def XY軸をリンクする(self):
self.グラフ2.setXLink(self.グラフ1) # ? 1
self.グラフ2.setYLink(self.グラフ1) # ? 2
if __name__ == '__main__':
app = QApplication(sys.argv)
window = GuiWindow()
sys.exit(app.exec())
まとめ
Python PyQtGraphで複数グラフの位置や拡大縮小を同期(リンク)する方法を説明した。
コメント