PyQt4 + matplotlib en un QScrollWidget

yo tengomatplotlib incrustado en unPyQt4 aplicación en la que estoy trabajando. El problema es que cuando agrego dinámicamente una trama secundaria a la figura, las cifras se comprimen con cada trama secundaria agregada. Pensé que podría resolver esto estableciendo la figura a unQScrollArea pero eso no funciona (por lo que puedo decir). Aquí hay un ejemplo de lo que pensé que funcionaría

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_()

¿Observa cómo todos los gráficos se rompen para mostrarlos en el mismo espacio visible? No tendré que desplazarme para ver los otros gráficos. No estoy seguro de cómo hacer esto exactamente.

¿Alguien sabe cómo hacer esto u otra forma de hacerlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta