Я искал полдня для этого без везения. У меня есть PlotWidget, который я хочу настроить автоматически. Тем не менее, если это так, у него есть это «заполнение» (другими словами, диапазон немного больше фактического диапазона). Знаете ли вы способ избежать этого заполнения при сохранении автоматического выбора диапазона.
Автоматический выбор диапазона PlotWidget без заполнения (pyqtgraph)
Ответы (3)
Метод autoRange
на самом деле имеет параметр заполнения. По умолчанию это None
, что означает, что отступ находится между 0,02 и 0,1 в зависимости от размера ViewBox. См. документацию здесь.
Установив padding=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)
Для себя будущего.
я использовал
pg.ViewBox.suggestPadding = lambda *_: 0.0
чтобы навсегда отключить заполнение, когда что-то рисуется.
Однако для setRange
и родственников из PlotWidget
и GraphicsView
по-прежнему требуется параметр padding=0.0
, поскольку они не учитывают заполнение ViewBox
.