Инвертирование оси Y в PyQtGraph

Я разрабатываю приложение с Python и PyQt4, которое отображает различные параметры в зависимости от глубины. Пакет для построения графиков — PyQtGraph из-за его хороших характеристик скорости анимации. Поскольку я рисую по глубине, я хочу инвертировать ось Y. Я обнаружил, что могу изменить класс ViewBox в документации PyQtGraph. Поэтому я изменил код класса из папки Python Site Packages. Но я хотел бы иметь возможность изменять класс из кода моего приложения и не изменять код PyQtGraph (invertY=True). Причина в том, что мне нужны PlotWidgets с перевернутой осью Y, а некоторые без нее. Есть ли способ сделать это, например, в следующем коде? Мне не удалось сделать это, получив ViewBox в коде:

import sys
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import random
import time

app = QtGui.QApplication([])
p = pg.plot()
curve = p.plot()

##initialize the arrays
data = []
data.append(random.random())
n = []
n.append(time.clock())

##define the plotting function
def update():

    data.append(data[-1] + 0.2 * (0.5 - random.random()))
    n.append(time.clock())
    curve.setData(data,n)
    time.sleep(0.1)

timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(0)

if __name__ == '__main__':

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

person Ivy    schedule 09.03.2017    source источник


Ответы (1)


В вашем случае curve это PlotDataItem. Чтобы получить окно просмотра PlotDataItem, используйте его метод getViewBox(). Затем окно просмотра имеет метод invertY.

p = pg.plot()
curve = p.plot()
curve.getViewBox().invertY(True)
person ImportanceOfBeingErnest    schedule 09.03.2017