Python 从for循环中删除注释

Python 从for循环中删除注释,python,python-2.7,matplotlib,annotations,Python,Python 2.7,Matplotlib,Annotations,问题在于,aux1.remove()不会删除添加到散点的注释 但是aux.remove()确实移除了分散点。因此,当我不断添加/删除新点时,最终我得到了很多注释 aux = plt.scatter(obj_dy[:], obj_dx[:], color='green') for k in range(len(obj_index)): aux1 = plt.annotate(str(obj_index[k]), xy = (obj_dy[k], obj_dx[k])) plt.pause

问题在于,
aux1.remove()
不会删除添加到散点的注释

但是
aux.remove()
确实移除了分散点。因此,当我不断添加/删除新点时,最终我得到了很多注释

aux = plt.scatter(obj_dy[:], obj_dx[:], color='green')

for k in range(len(obj_index)):
    aux1 = plt.annotate(str(obj_index[k]), xy = (obj_dy[k], obj_dx[k]))
plt.pause(0.1000)
aux.remove()
aux1.remove()

问题是注释的创建在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()
不必将注释存储在列表中的另一种方法是循环通过
子项,检查它们是否为注释,如果是,则删除:

for child in plt.gca().get_children():
    if isinstance(child, matplotlib.text.Annotation):
        child.remove()