我对matplotlib的函数triplot有疑问。 我在画布中使用函数triplot绘制一个网格,我想在一个动作后清除这个网格。我的画布嵌入了我的林间窗口中留下的区域。 这是我的一段代码:
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
fig = Figure()
ax = fig.add_subplot(111)
canvas = FigureCanvas(fig)
place = builder.get_object("vbox_visu")
place.pack_start(canvas)
mesh = ax.triplot(x,y)
canvas.draw()
这项工作完美,但我现在不知道如何清除我的网格。 规格:在背景中我使用底图来绘制大陆(和BlueMarble),我不想清除其他人的数字。 我希望有人可以帮助我。 谢谢
答案 0 :(得分:0)
通常,matplotlib函数会返回它们添加的艺术家。
不幸的是,triplot
没有。 (这可以说是一个错误。)请注意,上面示例中mesh
为None
。
但是,triplot
添加了PathPatch
和Line2D
。这些内容分别附加到ax.patches
和ax.lines
。
因此,您可以通过执行以下操作删除网格:
ax.lines[-1].remove()
ax.patches[-1].remove()
canvas.draw()
这假设triplot
是最后一个被调用的绘图函数。 (如果没有,请在使用line = ax.lines[-1]
绘图后立即执行类似triplot
之类的操作,以便继续修改补丁和行的参考。
答案 1 :(得分:0)
这应该在v1.4中解决: