python pyqtgraph 如何让左右Y轴独立,如两个数据跟随左侧Y轴移动,两个数据跟随右侧Y轴移动,并共用一个X轴
时间: 2024-10-14 15:17:28 浏览: 54
在PyQtGraph中,要创建一个图表,其中有两个独立的Y轴并共享X轴,可以使用`PlotWidget`和`curves`功能。下面是一个简单的例子,展示了如何实现这个效果:
```python
import sys
from PyQt5.QtWidgets import QApplication
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
class PlotApp(QtGui.QMainWindow):
def __init__(self):
super().__init__()
self.plot_widget = pg.PlotWidget()
self.setCentralWidget(self.plot_widget)
# 创建两条曲线,每条曲线对应一个独立的Y轴
pen_left = pg.mkPen(color='r', width=2)
curve1_data = ... # 替换为实际的数据源
curve1 = self.plot_widget.plot(x=curve1_data[:, 0], y=curve1_data[:, 1], pen=pen_left, name="Left Y")
pen_right = pg.mkPen(color='g', width=2)
curve2_data = ... # 另一条数据源
curve2 = self.plot_widget.plot(x=curve2_data[:, 0], y=curve2_data[:, 1], pen=pen_right, name="Right Y",
linkView='right')
# 设置共享X轴
curve1.getViewBox().linkToView(curve2.getViewBox(), 'x')
layout = self.plot_widget.ci.layout()
layout.nextRow()
app = QApplication(sys.argv)
window = PlotApp()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们首先创建了一个`PlotWidget`,然后分别创建了两个`pg.PlotItem`(实际上由`plot()`方法返回的是一个元组,包含`PlotItem`和`DataItem`),它们代表两个独立的Y轴。通过设置`linkView='right'`,我们可以让第二条曲线的Y轴链接到右边。
最后,我们使用`layout.nextRow()`将两个Y轴分隔开,并确保它们共享X轴。
阅读全文