问题在于<div id="div2">
...
</div>
不会删除添加到分散点的注释。
但是aux1.remove()
确实删除了分散点。因此,当我不断添加/删除新点时,最终会得到很多注释。
aux.remove()
答案 0 :(得分:0)
问题在于注释的创建在for循环内。当您执行aux1.remove()
时,仅删除轴上的最后一个注释。
一种解决方案是将aux1
放入列表中,在for循环完成之后,遍历该列表并删除注释:
aux = plt.scatter(obj_dy[:], obj_dx[:], color='green')
aux1_list = [] # empty list that the annotation will go in
for k in range(len(obj_index)):
aux1 = plt.annotate(str(obj_index[k]), xy = (obj_dy[k], obj_dx[k]))
aux1_list.append(aux1)
plt.pause(0.1)
aux.remove() # remove scatter points
# remove annotations
for ann in aux1_list:
ann.remove()
plt.pause(0.01)
plt.show()
无需将注释存储在列表中的另一种方法是遍历axes
子级,检查它们是否为注释,如果是,则删除:
for child in plt.gca().get_children():
if isinstance(child, matplotlib.text.Annotation):
child.remove()