不带填充的自动调整范围的 PlotWidget (pyqtgraph)

问题描述 投票:0回答:4

我为此寻找了半天,但没有运气。我有一个 PlotWidget,我想自动调整范围。然而,如果确实如此,它就会有这个“填充”(换句话说,范围比实际范围稍大)。您知道在保持自动量程的同时避免这种填充的方法吗?

python pyqt pyqtgraph
4个回答
1
投票

autoRange
方法实际上有一个padding参数。默认情况下,这是
None
,这意味着填充介于 0.02 和 0.1 之间,具体取决于 ViewBox 的大小。请参阅文档此处

通过设置

padding=0
,您将不会得到任何填充。


0
投票

pyqtgraph 自动调整范围强制非零填充。您可以在 updateAutoRange() 的源代码中看到这一点,网址为 http://www.pyqtgraph.org/documentation/_modules/pyqtgraph/graphicsItems/ViewBox/ViewBox.html#ViewBox.autoRange

我有同样的无填充目标,并添加了我自己的自动范围代码。它根据输入数据的最大值调整 Y 轴最大值,同时保持零填充。

yMax = max(Y)
existingViewRect = self.ui.myGraph.plotItem.getViewBox().viewRange()
yMaxInView = existingViewRect[1][1]
if (yMax < 80):
    self.ui.myGraph.setYRange(0, 100, padding=0)
elif yMax > yMaxInView:
    self.ui.myGraph.setYRange(0, 2*yMaxInView, padding=0)
elif (yMax < yMaxInView/2):
    self.ui.myGraph.setYRange(0, yMaxInView/2, padding=0)

0
投票

为了未来的自己。

我用过

pg.ViewBox.suggestPadding = lambda *_: 0.0

在绘制某些内容时永久禁用填充。

但是,

setRange
以及
PlotWidget
GraphicsView
的亲戚仍然需要
padding=0.0
参数,因为它们不尊重
ViewBox
填充。


0
投票

对我有用的是用户“Baron”建议的衍生 - 实现我自己的自动范围。我意识到默认情况下

existingViewRect = self.ui.myGraph.plotItem.getViewBox().viewRange()
会为我获取带有填充的数据,这也用于默认的自动调整范围。所以这就像手动确定数据长度并将填充设置为 0 一样简单。

max_x_value = len(self.data['Close'])
self.graphWidget.setXRange(0, max_x_value, padding=0)
© www.soinside.com 2019 - 2024. All rights reserved.