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()