web-dev-qa-db-ja.com

Python pyqtgraphグラフにx軸とy軸の制限を設定する方法、オートレンジなし

Pyqtgraph.GraphicsWindow.addPlotオブジェクトに表示されるx軸とy軸の制限を設定する方法を知りたいです。ループ内に大量のデータを表示する必要がありますが(したがって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つ指定)

これは非常に単純な質問であると思います。プロットする前に軸の範囲を設定するだけです。

9
Michael

エラーメッセージが示すように、setXRange()に正しい数の引数を指定していません。正しい行は次のようになります。

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

ここのドキュメント: http://www.pyqtgraph.org/documentation/graphicsItems/viewbox.html#pyqtgraph.ViewBox.setXRange

11
Luke

マイケル。

最も簡単な方法は、範囲をリストの要素として指定することです。 p1.setXRangeを次のようなものに置き換えます。

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

以上です!

このクラスのドキュメントを確認してください: http://www.pyqtgraph.org/documentation/graphicsItems/viewbox.html#pyqtgraph.ViewBox.setRange

3
Mario García

質問は、この点に対するどの回答も答えないビューに制限を設定する方法を尋ねます。これに出くわした他の人にとって、プロットのビューは次のような軸のセクションに制限することができます:

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

ドキュメント: http://www.pyqtgraph.org/documentation/graphicsItems/viewbox.html

0