PyQt中嵌入交互式Matplotlib图表

7
我已创建了一个简单的Python脚本,运行时会在PyQT窗口中显示一个内嵌的matplotlib图表。我使用了教程来进行图表的嵌入和运行。除了一些命名约定和整体UI上的差异外,我的图表与提到的教程中的图表生成完全相同。
我的问题是,我想把这个图表变成可以进行缩放和拖动的交互式图表,但我只想用鼠标(点击和拖动,滚轮等),而不使用工具栏(因为我觉得它丑陋)。
小部件类:
class MplCanvas(FigureCanvas):
    """
    Creates a canvas on which to draw our widgets
    """
    def __init__(self):
        self.fig = Figure()
        self.ax = self.fig.add_subplot(111)

        FigureCanvas.__init__(self, self.fig)
        FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

class marketdephWidget(QtGui.QWidget):
    """
    The market deph graph
    """
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.canvas = MplCanvas()
        self.vbl = QtGui.QVBoxLayout()
        self.vbl.addWidget(self.canvas)
        self.setLayout(self.vbl)

绘制函数(点击按钮运行):

# initialize the mplwidgets
def PlotFunc(self):
    randomNumbers = random.sample(range(0, 10), 10)
    self.ui.widget.canvas.ax.clear()
    self.ui.widget.canvas.ax.plot(randomNumbers)
    self.ui.widget.canvas.draw()
1个回答

2

有一段时间没有更新了,但我正在解决一个类似的问题。这里有一个示例,希望对你有所帮助。

该程序使用PySide,但不应该有问题。

运行程序的方法:

python pyStocker.py

您会看到一个小部件弹出窗口,在左上方您会看到一个TextEdit框。只需输入GOOG或其他有效的股票符号,然后按回车键。图表将显示该股票的数据。底部的滑动条可以实时更改图表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接