Es ist eigentlich nicht so kompliziert. Relevante Qt-Widgets sind in matplotlib.backends.backend_qt4agg
. FigureCanvasQTAgg
und NavigationToolbar2QT
sind in der Regel das, was Sie brauchen. Dies sind reguläre Qt-Widgets. Sie behandeln sie wie jedes andere Widget. Unten ist ein sehr einfaches Beispiel mit einem Figure
, Navigation
und eine einzelne Taste , die einige Zufallsdaten zieht. Ich habe Kommentare hinzugefügt, um die Dinge zu erklären.
import sys
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import random
class Window(QtGui.QDialog):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.figure = Figure()
self.canvas = FigureCanvas(self.figure)
self.toolbar = NavigationToolbar(self.canvas, self)
self.button = QtGui.QPushButton('Plot')
self.button.clicked.connect(self.plot)
layout = QtGui.QVBoxLayout()
layout.addWidget(self.toolbar)
layout.addWidget(self.canvas)
layout.addWidget(self.button)
self.setLayout(layout)
def plot(self):
''' plot some random stuff '''
data = [random.random() for i in range(10)]
ax = self.figure.add_subplot(111)
ax.clear()
ax.plot(data, '*-')
self.canvas.draw()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Window()
main.show()
sys.exit(app.exec_())
Bearbeiten :
Aktualisiert, um Kommentare und API-Änderungen widerzuspiegeln.
NavigationToolbar2QTAgg
geändert mit NavigationToolbar2QT
- Direkt importieren
Figure
stattpyplot
- Ersetzen Sie veraltet
ax.hold(False)
durchax.clear()