各位DL,我在使用pyqtgraph的多个viewbox绘制多Y轴时,发现次坐标的Y轴与实际数据不符,而且零点也无法对齐。
比如,我下面这张图,红色横线是在对应 【静压效率】纵坐标的50,但是图像上并没有对正50
备注:
多个viewbox已经采用setlink, setgeometry过了。
看了下其他DL绘制多Y轴的方法,也是出现次坐标不对其(尤其是零点与主坐标有偏移)
目前找到一个解决思路是,将x轴剥离到下一行,可以处理偏差问题。具体的解决过程我会整理成博客发出来。
【以下回答由 GPT 生成】
这个问题可能是由于没有正确设置坐标轴范围的原因导致的。下面是解决这个问题的一些步骤和代码示例:
首先,确保你已经使用setLink
方法将多个viewbox链接到主viewbox,这样它们的范围将与主viewbox保持一致。 python viewbox2.setLink(viewbox1) # 将viewbox2链接到viewbox1 viewbox3.setLink(viewbox1) # 将viewbox3链接到viewbox1
检查每个viewbox的范围是否正确设置。你可以使用setYRange
方法手动设置Y轴范围,或者使用ViewBox.setAutoVisible
方法自动调整范围。 python viewbox1.setYRange(0, 100) # 设置viewbox1的Y轴范围为0到100 viewbox2.setAutoVisible(y=True) # 自动调整viewbox2的Y轴范围 viewbox3.setAutoVisible(y=True) # 自动调整viewbox3的Y轴范围
如果你的数据不是从0开始的,你可能还需要设置Y轴的偏移量,以便将零点对齐到正确的位置。你可以使用setYRange
方法的padding
参数来实现这个功能。 python viewbox1.setYRange(min_value - padding, max_value + padding, padding=0) # 设置viewbox1的Y轴范围,并设置padding参数为合适的值
最后,检查你的数据是否正确对应到每个viewbox。确保你在绘图时传递了正确的数据和viewbox对象。 python curve1 = pg.PlotCurveItem(x_data, y_data1, pen='r') # 使用viewbox1的数据绘制曲线 curve2 = pg.PlotCurveItem(x_data, y_data2, pen='g') # 使用viewbox2的数据绘制曲线 curve3 = pg.PlotCurveItem(x_data, y_data3, pen='b') # 使用viewbox3的数据绘制曲线
希望这些步骤和代码示例能够帮助你解决pyqtgraph多Y轴偏差的问题。如果你还有其他问题,请随时提问。