Python pyqtgraph, как установить ограничения по осям x и y на графике, без автодиапазона

Я хотел бы знать, как я могу установить пределы осей x и y, которые отображаются для объекта pyqtgraph.GraphicsWindow.addPlot. Мне нужно отобразить много данных внутри цикла (следовательно, используя pyqtgraph), но я бы предпочел заранее выделить свои оси, а не позволить автодиапазон потенциально увеличить скорость. В качестве примера,

from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="My plotting examples")
win.resize(1000,600)
win.setWindowTitle('pyqtgraph example: Plotting')
p1 = win.addPlot(title="plot1")
p2 = win.addPlot(title="plot2")
curve1 = p1.plot(pen='y')
curve2 = p1.plot(pen='r')
curve3 = p2.plot(pen='b')
x = np.linspace(0,10,1000)
x_current = x[0]
p1.setXRange((5,20), padding=0)
for i in range(1,len(x)):
    x_current = np.append(x_current,x[i])
    curve1.setData(x_current,np.sin(x_current))
    curve2.setData(x_current,np.cos(x_current))
    curve3.setData(x_current,np.tan(x_current))
    app.processEvents()

if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

Проблема кроется в строке p1.setXRange((5,20),padding=0). Это приводит к ошибке: TypeError: setXRange() принимает не менее 3 аргументов (3 задано)

Я думаю, что это должен быть очень простой вопрос, просто установить диапазоны осей перед построением графика.


person Michael    schedule 13.04.2015    source источник


Ответы (3)


Как видно из сообщения об ошибке, вы указали неправильное количество аргументов для setXRange(). Правильная строка должна выглядеть так:

p1.setXRange(5, 20, padding=0)

Документация здесь: http://www.pyqtgraph.org/documentation/graphicsItems/viewbox.html#pyqtgraph.ViewBox.setXRange

person Luke    schedule 01.05.2015
comment
padding=0 Спасибо! - person justengel; 13.07.2017

Майкл.

Самый простой способ - просто указать ваши диапазоны как элементы списка. Замените p1.setXRange чем-то вроде этого:

p1.setRange(xRange=[5,20])

Вот и все!

Ознакомьтесь с документацией этого класса по адресу: http://www.pyqtgraph.org/documentation/graphicsItems/viewbox.html#pyqtgraph.ViewBox.setRange

person Mario García    schedule 16.07.2015

В вопросах спрашивается, как установить ограничение на представление, на которое не отвечает ни один из ответов на этот вопрос. Для других, кто сталкивается с этим, вид графика может быть ограничен таким участком оси:

p1.plotItem.vb.setLimits(xMin=a, xMax=b, yMin=c, yMax=d)

Документация: http://www.pyqtgraph.org/documentation/graphicsItems/viewbox.html< /а>

person Andrew R Derringer    schedule 23.01.2020