我有一个用pyqtgraph绘制的时间序列波形图。用户应该能够放大和缩小到不同的时间点(x轴),并且y轴应该自动缩放到当前x值范围内可见的任何数据。我相信enableAutoRange
和setAutoVisible
应该允许这样做,但是似乎不起作用。我已经解锁了宽高比,但这似乎无济于事。
下面是一个最小的示例,请有人建议如何使此工作正常进行吗?理想情况下,当您放大右侧的低振幅数据时,y轴应放大以使正弦波可见。
import numpy
import pyqtgraph
x_data = numpy.linspace(0, 100, num=10000)
y_data = 1000*numpy.sin(x_data)
y_data[5000:] = numpy.sin(x_data[5000:])
plt = pyqtgraph.plot(x_data, y_data)
plt.setMouseEnabled(x=True,y=False)
vb = plt.getViewBox()
vb.setAspectLocked(lock=False)
vb.setAutoVisible(y=1.0)
vb.enableAutoRange(axis='y', enable=True)
一件有趣的事情是,如果缩放到右侧,然后右键单击并选择“ Y轴”,“自动”将按预期工作。
答案 0 :(得分:0)
每次缩放更改时,通过设置enableAutoRange
和setAutoVisible
就能使它起作用。
您的代码应如下所示:
def setYRange(self, (x_range_start, x_range_end)):
self.enableAutoRange(axis='y')
self.setAutoVisible(y=True)
vb.sigXRangeChanged.connect(setYRange)