Pyqtgraph交互性和轴刻度

时间:2013-09-12 10:24:35

标签: python graph plot interactive pyqtgraph

您好我无法确定我需要使用Pyqtgraph的哪些功能。

  1. Pyqtgraph会自动计算轴并在缩放时重新缩放,这很好。但是我有两个轴,频率和小时。频率可以取0-100之间的任何值,小时可以取0-39之间的任何值。如何将轴限制为这些上限/下限,以便当用户缩放或平移时,它们不能超出这些值?

  2. 我希望添加一些功能,以便用户可以在选定的线条上绘制一个矩形,图形将刷新,使矩形内的线条保持各自的颜色,外面的任何线条变为灰色?

  3. 如何在同一个窗口中添加另一个图形,该窗口显示2中矩形所选区域的放大视图。?

  4. 我的代码如下,并且当前放大了用户定义的矩形在线上的绘图(对于3行,我的实际代码将绘制更多):

    from pyqtgraph.Qt import QtGui, QtCore
    import numpy as np
    import pyqtgraph as pg
    
    pg.setConfigOption('background', 'w')
    pg.setConfigOption('foreground', 'k')
    
    from random import randint
    
    class CustomViewBox(pg.ViewBox):
        def __init__(self, *args, **kwds):
        pg.ViewBox.__init__(self, *args, **kwds)
        self.setMouseMode(self.RectMode)
    
        ## reimplement right-click to zoom out
        def mouseClickEvent(self, ev):
        if ev.button() == QtCore.Qt.RightButton:
            #self.autoRange()
            self.setXRange(0,5)
            self.setYRange(0,10)
    
        def mouseDragEvent(self, ev):
        if ev.button() == QtCore.Qt.RightButton:
            ev.ignore()
        else:
            pg.ViewBox.mouseDragEvent(self, ev)
    
    
    app = pg.mkQApp()
    
    vb = CustomViewBox()
    
    graph = pg.PlotWidget(viewBox=vb, enableMenu=False)
    
    colour = []
    
    for i in range(0,3):
        colourvalue = [randint(0,255), randint(0,255), randint(0,255)]
        tuple(colourvalue)
        colour.append(colourvalue)
    
    y_data = [ 
         [['a',0],['b',1],['c',None],['d',6],['e',7]],
         [['a',5],['b',2],['c',1],['d',None],['e',1]],
         [['a',3],['b',None],['c',4],['d',9],['e',None]],
         ]
    
    x_data = [0, 1, 2, 3, 4]
    
    for i in range(3):
        xv = []
        yv = []
        for j, v in enumerate(row[i][1] for row in y_data):
        if v is not None:
            xv.append(int(j))
            yv.append(float(v))
        graph.plot(xv, yv, pen = colour[i], name=y_data[0][i][0])
    
    graph.show()
    graph.setWindowTitle('Hourly Frequency Graph')
    graph.setXRange(0,5)
    graph.setYRange(0,10)
    
    graph.setLabel('left', "Frequency", units='%')
    graph.setLabel('bottom', "Hour")
    graph.showGrid(x=True, y=True)
    
    if __name__ == '__main__':
        import sys
        if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
            QtGui.QApplication.instance().exec_()
    

    提前感谢您的任何帮助和建议!

    我还想知道为什么这段代码总是会出现分段错误:11当我关闭窗口时。

0 个答案:

没有答案