PyQt4 + matplotlib in einem QScrollWidget

ich habematplotlib eingebettet in aPyQt4 App, an der ich arbeite. Das Problem ist, wenn ich der Figur dynamisch einen Untergrund hinzufüge, die Figuren mit jedem hinzugefügten Untergrund komprimieren. Ich dachte, ich könnte das lösen, indem ich die Zahl auf a setzeQScrollArea aber das geht nicht (soweit ich das beurteilen kann). Hier ist ein Beispiel von dem, was ich dachte, würde funktionieren

import os
os.environ['QT_API'] = 'pyside'

from PySide.QtGui   import *
from PySide.QtCore  import *

import matplotlib

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
from matplotlib.figure                  import Figure


class Canvas(FigureCanvasQTAgg):

    def __init__(self, parent=None):
        self.figure = Figure()
        super(Canvas, self).__init__(self.figure)

        ax = self.figure.add_subplot(1,1,1)
        ax.plot([1,2,3])
        self.draw()

    def add_subplot(self, data=[]):
        rows = len(self.figure.axes) + 1
        for index, axes in enumerate(self.figure.axes, start=1):
            axes.change_geometry(rows, 1, index)

        ax = self.figure.add_subplot(rows, 1, index+1)
        ax.plot(data)

        self.draw()

class Main(QWidget):

    def __init__(self, parent=None):
        super(Main, self).__init__(parent)

        self.canvas = QScrollArea(self)
        self.canvas.setWidget(Canvas(self))
        self.canvas.setWidgetResizable(True)

        for x in range(5):
            self.canvas.widget().add_subplot()

        layout = QVBoxLayout(self)
        layout.addWidget(self.canvas)


app = QApplication([])
main = Main()
main.show()
app.exec_()

Beachten Sie, wie alle Graphen zusammengeschlagen werden, um dann im selben sichtbaren Raum anzuzeigen? Ich muss nicht scrollen, um die anderen Grafiken zu sehen. Ich bin mir nicht sicher, wie ich das genau machen soll.

Weiß jemand, wie man das macht oder wie man das macht?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage