每次绘图时,Matplotlib嵌入式PyQt4图形都会调整大小

时间:2011-12-13 07:48:36

标签: pyqt matplotlib pyqt4 numerical

我在PyQt4应用程序中有一个嵌入式matplotlib图。这是我根据http://matplotlib.sourceforge.net/examples/user_interfaces/embedding_in_qt4.html的Qt4嵌入样本制作的绘图小部件。不幸的是,每次添加新图时,此图都会略微缩小。如果有所不同,我会在QGridLayout中并排排列两个绘图小部件。

这种奇怪行为的原因是什么?

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

class MultiPlot(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)
        self.setMinimumSize(300, 200)
        self.setMaximumSize(600, 400)

    def plot(self,x,y):
        print "Plot"
        self.axes.plot(x,y)
        FigureCanvas.updateGeometry(self)

    def changePlot(self,plotNum,x,y):
        print "Change plot",plotNum
        self.axes.lines[plotNum].set_data(x,y)
        FigureCanvas.updateGeometry(self)

1 个答案:

答案 0 :(得分:2)

我在小部件上使用setFixedSize修复此问题,而不是允许布局管理器调整大小。我不明白为什么布局管理员想要在添加更多图表时缩小小部件但是问题仍然得到解决