我用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()
为什么会出现此警告?
答案 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
。
这解决了警告!