在 Matplotlib 中清除子图

Posted

技术标签:

【中文标题】在 Matplotlib 中清除子图【英文标题】:Clearing a subplot in Matplotlib 【发布时间】:2018-04-27 05:34:50 【问题描述】:

我在图 fig1 中有多个子图,通过

创建
ax = fig1.add_subplot(221)

然后我通过

在每个子图中绘制内容
im=ax.plot(x,y)

并通过添加一些轴标签

ax.set_xlabel('xlabel')

然后我想完全清除特定的子图,如When to use cla(), clf() or close() for clearing a plot in matplotlib? 中所述。然而问题是ax.cla()ax.clear()似乎只清除了图中的数据,没有删除轴、轴刻度标签等。另一方面plt.clf()清除了整个图形。中间有什么东西吗?一个类似 clf 的命令,可以清除子图中的所有内容,包括轴标签?还是我只是以错误的方式使用了命令?

【问题讨论】:

【参考方案1】:

ax.clear() 清除坐标区。也就是说,它会从坐标区中删除所有设置和数据,这样您就可以留下一个坐标区,就像刚刚创建它一样。

ax.axis("off") 关闭坐标区,从而隐藏所有坐标区的脊椎和刻度标签。

ax.set_visible(False) 使整个坐标区不可见,包括其中的数据。

ax.remove() 从图中删除轴。

完整示例:

import matplotlib.pyplot as plt

fig,axes = plt.subplots(2,3)
for ax in axes.flat:
    ax.plot([2,3,1])

axes[0,1].clear()
axes[1,0].axis("off")
axes[1,1].set_visible(False)
axes[0,2].remove()

plt.show()

【讨论】:

非常感谢! remove() 符合我的要求,但其他选项也很有用。

以上是关于在 Matplotlib 中清除子图的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib的子图subplot的使用

matplotlib.pyplot.subplots_adjust

python matplotlib中axes与subplot

Python Matplotlib画图基础介绍

matplot:在matplotlib中显示标签的问题[重复]

python matplotlib画多张图