You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQtGraph多子图共享X轴时Y轴对齐问题咨询

解决PyQtGraph多子图Y轴对齐问题

我之前用PyQtGraph做共享X轴的多子图时也碰到过一模一样的问题——不同子图Y轴的刻度标签长度差异大,导致整个Y轴歪歪扭扭没法对齐。其实只要稍微调整一下布局或者轴的宽度设置就能搞定,给你分享两个亲测好用的方法:

方法一:固定Y轴宽度

直接给每个子图的左侧Y轴设置固定宽度,强制所有Y轴占用相同的横向空间,这样不管标签长短,轴的位置就对齐了。

下面是补全并修改后的测试代码:

from pyqtgraph import QtGui, QtCore
import pyqtgraph as pg
import numpy as np

# 生成测试数据
x = np.linspace(0, 80, 81)
y1 = np.sqrt(x)
y2 = 10*x**2

# 创建应用和窗口
app = QtGui.QApplication([])
win = pg.GraphicsLayoutWidget(show=True, title='共享X轴的对齐子图')
win.resize(800, 600)

# 创建共享X轴的两个子图
p1 = win.addPlot(title='子图1: sqrt(x)')
p1.plot(x, y1)
# 添加第二个子图,共享p1的X轴
p2 = win.addPlot(title='子图2: 10x²', row=1, col=0)
p2.plot(x, y2)
p2.setXLink(p1)

# **关键:固定两个子图的Y轴宽度**
# 获取左侧Y轴并设置固定宽度(可以根据你的标签长度调整数值,比如80)
y_axis1 = p1.getAxis('left')
y_axis1.setFixedWidth(80)
y_axis2 = p2.getAxis('left')
y_axis2.setFixedWidth(80)

# 隐藏p2的X轴标签,避免重复
p2.hideAxis('bottom')

if __name__ == '__main__':
    QtGui.QApplication.instance().exec_()

方法二:用网格布局约束列宽

如果你更倾向于用Qt的布局系统来控制,也可以用QGridLayout来管理子图,指定Y轴所在的列宽度固定,这样所有子图的Y轴区域会自动对齐。

示例代码如下:

from pyqtgraph import QtGui, QtCore
import pyqtgraph as pg
import numpy as np

# 生成测试数据
x = np.linspace(0, 80, 81)
y1 = np.sqrt(x)
y2 = 10*x**2

# 创建应用和窗口
app = QtGui.QApplication([])
win = QtGui.QWidget()
win.setWindowTitle('共享X轴的对齐子图')
layout = QtGui.QGridLayout(win)

# 创建两个子图,共享X轴
p1 = pg.PlotWidget(title='子图1: sqrt(x)')
p1.plot(x, y1)
p2 = pg.PlotWidget(title='子图2: 10x²')
p2.plot(x, y2)
p2.setXLink(p1)
p2.hideAxis('bottom')

# 添加到网格布局,Y轴都在第0列
layout.addWidget(p1, 0, 0)
layout.addWidget(p2, 1, 0)

# **关键:设置第0列(Y轴所在列)的固定宽度**
layout.setColumnFixedWidth(0, 800)  # 这里的宽度是整个PlotWidget的宽度,Y轴会自动占对应空间

win.show()
win.resize(800, 600)

if __name__ == '__main__':
    QtGui.QApplication.instance().exec_()

两种方法都能解决问题,你可以根据自己的布局需求选:如果是用PyQtGraph自带的GraphicsLayoutWidget,方法一更直接;如果是混合了Qt的其他控件,方法二的布局方式更灵活。

内容的提问来源于stack exchange,提问作者EL_DON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:19:01