Matplotlib interaktive Grafik eingebettet in PyQt
Habe ich ein einfaches python-Skript, das bei der Ausführung angezeigt werden sollen, die eine eingebettete matplotlib graph innen eine PyQT-Fenster. Ich habe diese tutorial für die Einbindung und den Betrieb der graph. Abgesehen von einigen unterschieden in der Benennung von Konventionen und in die gesamte Benutzeroberfläche ein Diagramm generiert wird, genau wie im tutorial erwähnt.
Mein problem ist, dass ich möchte, um diese interaktive Grafik ermöglicht Zoomen und verschieben, aber ich möchte diese nur mit der Maus (klicken und ziehen, scroll-Rad, etc) und ohne die toolbar (wie ich finde Sie hässlich).
Widget-Klasse:
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)
Zeichnen-Funktion (starten auf Knopfdruck):
# 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()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist schon eine Weile her, aber ich arbeite an einem ähnlichen problem. Ich habe eine Beispiel hier. Vielleicht wird dies helfen.
Dem Programm
PySide
, sollte nicht das problem sein obwohl.Um das Programm auszuführen
Würden Sie sehen, ein widget-popup und in der oberen linken, sehen Sie eine
TextEdit
box. Geben Sie einfach GOOG oder einen anderen gültigen stock-symbol und drücken Sie die EINGABETASTE. Der graph wird sich füllen mit dem Bestand der Daten. Die Schieberegler-Leiste unten ändert sich der graph in Echtzeit.