【问题标题】:Autoranging PlotWidget without padding (pyqtgraph)没有填充的自动调整 PlotWidget (pyqtgraph)
【发布时间】:2016-12-12 05:44:59
【问题描述】:

我找了半天没有运气。我有一个要自动排列的 PlotWidget。但是,如果确实如此,则它具有此“填充”(换句话说,范围比实际范围大一些)。你知道在保持自动量程的同时避免这种填充的方法吗?

【问题讨论】:

  • 请显示一些代码并解释自动量程的含义。

标签: python pyqt pyqtgraph


【解决方案1】:

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

通过设置padding=0 你没有填充。

【讨论】:

    【解决方案2】:

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

    我有相同的无填充目标,并添加了我自己的自动量程代码。它根据输入数据的最大值调整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)
    

    【讨论】:

      【解决方案3】:

      为了未来的自己。

      我用过

      pg.ViewBox.suggestPadding = lambda *_: 0.0
      

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

      但是,setRange 以及来自PlotWidgetGraphicsView 的亲戚仍然需要padding=0.0 参数,因为它们不尊重ViewBox 填充。

      【讨论】:

        猜你喜欢
        • 2018-05-20
        • 2013-09-11
        • 2021-10-31
        • 1970-01-01
        • 1970-01-01
        • 2022-07-11
        • 1970-01-01
        相关资源
        最近更新 更多