【发布时间】:2016-10-18 17:00:10
【问题描述】:
我正在使用 matplotlib 绘图并使用 ioff() 关闭交互模式,以抑制在创建图形时自动打开绘图窗口。我想完全控制这个数字,并且只有在明确使用show() 命令时才能看到它。
现在显然清除图形和轴的内置命令不再正常工作了。
例子:
import numpy as np
import matplotlib.pyplot as mpp
class PlotTest:
def __init__(self,nx=1,ny=1):
# Switch off interactive mode:
mpp.ioff()
# Create Figure and Axes:
self.createFigure(nx, ny)
def createFigure(self,nx=1,ny=1):
self.fig, self.axes = mpp.subplots(nx,ny)
if nx*ny == 1:
self.axes = np.array([self.axes])
def linePlot(self):
X = np.linspace(0,20,21)
Y = np.random.rand(21)
self.axes[0].plot(X,Y)
P = PlotTest()
P.linePlot()
P.fig.show()
现在我想我可以随时使用P.fig.clear() 来简单地清除P.fig,但显然情况并非如此。
将P.fig.clear() 直接写入脚本并一起执行它可以工作,我看到的只是一个空图。然而,这毫无意义,因为我从来没有看到过这样的实际情节。
在控制台中手动执行P.fig.clear() 不会执行任何操作,无论绘图窗口是否打开,所有其他可能的命令也会失败:
P.fig.clf()
P.axes[0].clear()
P.axes[0].cla()
mpp.clf()
mpp.cla()
mpp.close(P.fig)
将命令包装到类方法中也不起作用:
def clearFig(self):
self.fig.clear()
编辑 =================
在clear() fig.axes 为空后,show() 仍然显示旧图,其中轴仍在绘制中。
/编辑 =================
是因为我关闭了交互模式吗?
【问题讨论】:
标签: python matplotlib plot