Matplotlib встроил PyQt4 график каждый раз, когда я строю график - PullRequest
3 голосов
/ 13 декабря 2011

У меня есть встроенный график matplotlib в приложении PyQt4.Это созданный мной виджет на основе образца встраивания Qt4 на http://matplotlib.sourceforge.net/examples/user_interfaces/embedding_in_qt4.html. К сожалению, каждый раз, когда я добавляю новый график, этот график немного уменьшается.У меня есть два графических виджета, выровненных рядом в 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 Ответ

2 голосов
/ 13 декабря 2011

Я исправил это, используя setFixedSize в виджете, вместо того, чтобы разрешить менеджеру макета изменять размеры. Я не понимаю, почему менеджер компоновки хотел бы уменьшить виджет, когда было добавлено больше графиков, но проблема все равно исправлена ​​

...