Matplotlib interactive graph embedded in PyQt

大城市里の小女人 提交于 2019-12-04 09:45:20

问题


I've created a simple python script that when run should display an embedded matplotlib graph inside a PyQT window. I've used this tutorial for embedding and running the graph. Aside from some differences in the naming conventions and in the overall UI my graph is generated exactly as the one in the tutorial mentioned.

My problem is that I would like to make this an interactive graph that allows for zooming and dragging, but I would like to do this with only the mouse (clicking and dragging, scroll wheel, etc) and without the toolbar (as I find it ugly).

Widget Class:

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)

Plotting function (run on button press):

# 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:


It's been a while but I was working on a similar problem. I have an example here. Maybe this will help.

The program is using PySide, shouldn't be a problem though.

To run the program

python pyStocker.py

You would see a widget popup and in the top left you'll see a TextEdit box. Just enter GOOG or some other valid stock symbol and press enter. The graph will populate with the stock's data. The slider bar at the bottom changes the graph real-time.



来源:https://stackoverflow.com/questions/16188037/matplotlib-interactive-graph-embedded-in-pyqt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!