PyQtGraph 是一个用于创建交互式 2D 和 3D 图表的 Python 库。它特别适用于实时数据和科学数据的可视化。在 PyQtGraph 中,同步不同地块(plots)中轴的缩放意味着当一个地块的视图被缩放时,其他地块的视图也会相应地调整,以保持数据的一致性和可比较性。
在 PyQtGraph 中,每个地块(PlotItem)都有自己的视图(ViewBox),它负责管理该地块的显示范围和缩放级别。要实现不同地块之间的缩放同步,需要将这些地块的视图连接起来,使得一个视图的变换能够影响到其他视图。
以下是一个简单的示例代码,展示如何在 PyQtGraph 中同步两个地块的缩放:
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
# 创建应用程序和主窗口
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="PyQtGraph Zoom Synchronization")
# 创建两个地块
plot1 = win.addPlot(title="Plot 1")
plot2 = win.addPlot(title="Plot 2")
# 添加一些示例数据
plot1.plot([1, 2, 3, 4, 5], [1, 3, 2, 4, 5])
plot2.plot([1, 2, 3, 4, 5], [5, 4, 3, 2, 1])
# 获取两个地块的视图
vb1 = plot1.vb
vb2 = plot2.vb
# 定义一个函数,用于同步缩放
def sync_zoom(vb):
vb2.setRange(vb.state['viewRange'], padding=0)
# 连接视图的缩放事件
vb1.sigRangeChanged.connect(sync_zoom)
# 显示窗口
win.show()
app.exec_()
在这个示例中,我们创建了两个地块,并添加了一些示例数据。然后,我们获取了这两个地块的视图,并定义了一个 sync_zoom
函数来同步它们的缩放范围。最后,我们将第一个地块的 sigRangeChanged
信号连接到 sync_zoom
函数,这样当第一个地块的视图范围改变时,第二个地块的视图范围也会相应地更新。
更多关于 PyQtGraph 的信息和示例代码,可以参考其官方文档和 GitHub 仓库。
领取专属 10元无门槛券
手把手带您无忧上云