gpt4 book ai didi

Python Matplotlib : Clear figure when figure window is not open

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:16 25 4
gpt4 key购买 nike

我正在使用 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() 仍然显示旧图,其中轴仍在绘制.

/编辑================

是不是因为我关闭了交互模式?

最佳答案

如果在 P.fig.clear() 之后添加对 plt.draw() 的调用,则会清除图形。来自docs ,

This is used in interactive mode to update a figure that has been altered, but not automatically re-drawn. This should be only rarely needed, but there may be ways to modify the state of a figure with out marking it as stale. Please report these cases as bugs.

我想这不是一个错误,因为您已经关闭了交互模式,因此现在您有责任在需要时显式重绘。

您还可以使用P.fig.canvas.draw_idle(),它可以作为clearFigure方法包装在类中。

关于Python Matplotlib : Clear figure when figure window is not open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40102311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com