将y轴自动缩放到pyqtgraph中的可见数据

Posted

技术标签:

【中文标题】将y轴自动缩放到pyqtgraph中的可见数据【英文标题】:Autoscaling y axis to visible data in pyqtgraph 【发布时间】:2018-12-10 23:11:17 【问题描述】:

我有一个用 pyqtgraph 制作的时间序列波形图。用户应该能够放大和缩小到各个时间点(x 轴),并且 y 轴应该自动缩放到当前 x 值范围内可见的任何数据。我相信enableAutoRangesetAutoVisible 应该允许这样做,但它似乎不起作用。我已经解锁了纵横比,但这似乎没有帮助。

下面是一个最小的例子,请任何人建议如何让它工作?理想情况下,当您放大右侧的低幅度数据时,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-Axis>Auto,它会按预期工作。

【问题讨论】:

【参考方案1】:

我通过在每次缩放更改时设置 enableAutoRangesetAutoVisible 来让它工作。

您的代码应该如下所示:

def setYRange(self, (x_range_start, x_range_end)):
    self.enableAutoRange(axis='y')
    self.setAutoVisible(y=True)

vb.sigXRangeChanged.connect(setYRange)

【讨论】:

以上是关于将y轴自动缩放到pyqtgraph中的可见数据的主要内容,如果未能解决你的问题,请参考以下文章

C# Dundas Charts 自动缩放 Y 轴,没有超过 100% 的值

带有 x 范围滑块的 Y 轴自动缩放

在不缩放或移动的 3d 图中绘制文本

是否有用于自动范围的 PyQtGraph 参数来限制可见的点数?

PyQtGraph,仅向一个方向滚动图形

Seaborn:如何将每个分类值的 Y 轴缩放到 100%