MatplotlibDeprication警告与PyQt5教程

时间:2018-10-26 09:20:29

标签: matplotlib pyqt5

我用this site尝试了PyQt5教程。

此站点中有导入matplotlib的示例代码。
我尝试了该代码,然后可以得到PyQt窗口。在那个站点是同一个人。
但是我得到以下警告。

MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.warnings.warn(message, mplDeprecation, stacklevel=1)

这是该网站上与matplotlib相关的代码。

class PlotCanvas(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)

        FigureCanvas.setSizePolicy(self,
                QSizePolicy.Expanding,
                QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)
        self.plot()


    def plot(self):
        data = [random.random() for i in range(25)]
        ax = self.figure.add_subplot(111)
        ax.plot(data, 'r-')
        ax.set_title('PyQt Matplotlib Example')
        self.draw()

为什么会出现此警告?

2 个答案:

答案 0 :(得分:0)

您正在创建两个轴实例:

this.itemdetail.closeWasClicked()

,它是在创建类对象时创建的。第二个是

self.axes = fig.add_subplot(111) 

,当您使用类对象调用ax = self.figure.add_subplot(111) 方法时创建。由于这个原因,您很可能会收到此警告。另外,我相信您的plot方法中的以下行

plot

应写为(使用self.figure.add_subplot(111)

self.fig

答案 1 :(得分:0)

我删除了ax = self.figure.add_subplot(111)行,

并将属性ax替换为self.axes

这解决了警告!