2012-08-31 7 views
4

wxpython GUI에서 matplotlib을 사용하고 있습니다. 간략히 말하자면, 나는 많은 데이터를 꾸몄다. 그때 데이터 점을 클릭 (DataCursor에서 찾을 사용 :..그림에서 파이썬 및 주석 제거

Is there a matplotlib equivalent of MATLAB's datacursormode?

또는

Pop up annotations on matplotlib within wxPython

두 번째 링크가 내 실제 구현 나는 다른 클래스에서 datacursor 클래스를 refrense 무엇 예를 들어, 그림을 지우지 않고 plot_handle.set_data를 사용하여 스 캐터 플롯을 업데이트하는 이벤트 버튼이 있습니다. 그러나 주석은 정확히 그대로 유지됩니다. 점이 맞는지 상관없이 또는 아닙니다. 어떻게 제거합니까?

감사합니다.

답변

6

대부분의 matplotlib 객체는 remove() 함수를 가지고 있습니다 (나는 그것이 Artist에서 상속받은 것 같습니다). 제거하려는 객체에서 해당 객체를 호출하면됩니다.

편집 :

이있는 경우

dc = DataCursor(...) # what ever aruguements you give it 
# bunch of code 
dc.annotation.remove() 
del dc 
plt.draw() # need to redraw to make remove visible 

파이썬은 당신이 당신이 객체의 내부에 도달하고, 주석을 제거 호출 할 수 있도록 '개인', 속성의 어떤 개념이 없습니다. tutorial on classes for more details을 참조하십시오.

이 단점은 객체가 이상한 상태라는 것입니다. 다른 참조 사항이 있으면 잘못 행동 할 수도 있습니다. 당신은 당신이 set_* 기능의 사용 annotation 객체를 수정하거나 변경할 수 있습니다 주위 DataCursor 개체를 유지하려면 일시적 당신은 예술가처럼 삭제 예술가처럼 추가해야합니다 (doc)

+0

하지만 개체의 이름을 어떻게 결정합니까? 그게 내가 다른 클래스 (다른 "자기"- 그것이 의미가있는 경우)에서 만들어지기 때문에 문제가있는 것 같습니다. – mcfly

+0

@mcfly http://docs.python.org/ tutorial/classes.html. – tacaswell

+0

감사합니다 !!! 위대한 작품 – mcfly

1

을 숨길 수있는 가시성의

arrow2 = matplotlib.text.Annotation("I love it",xy=(0.5,0.5),xycoords='data',arrowprops=dict(arrowstyle="-")) 
ax2.add_artist(arrow2) 
arrow2.remove()