我可以在matplotlib
中创建文本框。但是我不知道如何从渲染的图形中删除它们?似乎在绘制文本框后没有figure.text.clear()
或figure.text(visible=False)
?这该怎么做呢?与图例不同,您似乎无法使它们可拖动?
我可以在matplotlib
中创建文本框。但是我不知道如何从渲染的图形中删除它们?似乎在绘制文本框后没有figure.text.clear()
或figure.text(visible=False)
?这该怎么做呢?与图例不同,您似乎无法使它们可拖动?
文本框就像画家一样,只要你保留对它们的引用,就可以做很多事情。因此,在任何绘图代码中,不要使用
fig.text(0, 0, 'My text')
你可以做
textvar = fig.text(0, 0, 'My text')
如果你丢失了引用,所有的文本对象都可以在texts
属性中找到:
fig.texts # is a list of Text objects
在1.3.1版本中,执行textvar.remove()
会生成NotImplementedError(显然在1.4中已经修复)。然而,您可以通过将可见性设置为False来在某种程度上避免这种情况。
for txt in fig.texts:
txt.set_visible(False)
这将使所有的文本框消失。
fig.texts
或ax.texts
打印在该fig/axes
中存在的所有标题列表。del
关键字删除特定的text
。考虑以下示例:
print(fig.texts)
输出:
[Text(-0.3, 5, 'Features data distribution'),
Text(-0.3, 4.5, 'Secondary title')]
假设您需要删除“次级标题”
del fig.texts[1]
print(fig.texts)
输出:
[Text(-0.3, 5, 'Features data distribution')]
在该图中标题将被删除。
我尝试使用 Artist.remove()
去除了 text()
,效果很好。
我们也可以使用 Artist.set_visible()
来显示/隐藏图形元素。
import matplotlib.pyplot as plt
from matplotlib.artist import Artist
fig, ax = plt.subplots()
frame = plt.text(0.6, 0.7, "hello world!", size=50,
ha="center", va="center",
)
# To hide the artist
Artist.set_visible(frame, False)
# To show the artist
Artist.set_visible(frame, True)
# To remove the artist
Artist.remove(frame)
plt.show()
对于那些想知道如何使用matplotlib.figure.Figure完成此操作的人:
# gca = get current axis
del fig.gca().texts[0]
# Redraw
fig.canvas.draw_idle()
figure.text.remove()
? - 101