在Matplotlib中,如何在不删除轴标签的情况下清除轴的内容?

时间:2017-03-28 17:00:17

标签: matplotlib

是否有一种替代axis.clear()的方法可以保持轴标签不变,同时擦除轴的内容?

上下文: 我有一个交互式脚本翻转一些流图像,并为每个图像,使用axes.quiver()绘制它。如果我在调用axes.quiver()之间不调用axes.clear(),则每个quiver()调用只会向绘图中添加更多箭头,而不会先删除先前添加的箭头。但是,当我调用axes.clear()时,它会修改轴标签。我可以重新设置它们,但它有点烦人。

1 个答案:

答案 0 :(得分:4)

您可以使用艺术家的remove()从轴中删除艺术家。下面是一个代码,显示了两个选项。

import matplotlib.pyplot as plt
import numpy as np

X, Y = np.meshgrid(np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2))
U = np.cos(X)
V = np.sin(Y)

plt.figure()
plt.title('Arrows scale with plot width, not view')
plt.xlabel('xlabel')
plt.xlabel('ylabel')

Q = plt.quiver(X, Y, U, V, units='width')
l, = plt.plot(X[0,:], U[4,:]+2)

# option 1, remove single artists
#Q.remove()
#l.remove()

# option 2, remove all lines and collections
for artist in plt.gca().lines + plt.gca().collections:
    artist.remove()

plt.show()