PyQtGraph子图Y轴起始线对齐问题求助
PyQtGraph子图Y轴起始线对齐解决方案
核心思路
问题根源是不同子图的Y轴标签/数值长度不同,导致轴占用宽度不一致。只要强制所有子图的Y轴区域宽度统一就能解决对齐问题,下面是几种实用方法:
方法1:固定Y轴宽度
直接给每个子图的左侧Y轴设置固定宽度,确保所有轴占用空间一致:
import pyqtgraph as pg from PyQt5.QtWidgets import QApplication app = QApplication([]) win = pg.GraphicsLayoutWidget() # 创建三个子图 p1 = win.addPlot(title="子图1") p2 = win.addPlot(title="子图2") p3 = win.addPlot(title="子图3") # 设定统一的Y轴宽度,根据最长轴标签调整数值 fixed_y_axis_width = 80 for plot in [p1, p2, p3]: plot.getAxis('left').setWidth(fixed_y_axis_width) # 测试数据 p1.plot([1,2,3], [100, 200, 300]) p2.plot([1,2,3], [1, 2, 3]) p3.plot([1,2,3], [1000, 2000, 3000]) win.show() app.exec_()
方法2:统一子图边距
通过设置子图的内容边距,强制左侧预留足够空间,适配最长的轴标签:
# 在创建子图后添加这段代码 for plot in [p1, p2, p3]: # 左、上、右、下边距,左边距设为能容纳最长轴标签的数值 plot.setContentsMargins(80, 20, 20, 20)
方法3:共享X轴(适用于X轴范围一致的场景)
如果子图的X轴范围相同,用setXLink共享X轴,PyQtGraph会自动对齐子图的起始线:
p2.setXLink(p1) p3.setXLink(p1)
内容的提问来源于stack exchange,提问作者BAR
相关产品推荐
相关产品推荐

