플롯에서 호버링 주석을 만드는 방법
수많은 데이터 포인트가 포함된 산점도를 분석할 때 특정 관심 지점을 식별하는 것이 어려울 수 있습니다. 한 가지 편리한 솔루션은 커서 이동 시 추가 정보를 표시하는 호버링 주석을 구현하는 것입니다.
matplotlib 라이브러리는 플롯에 주석을 추가하기 위한 다양한 기능을 제공합니다. 호버링 주석을 생성하려면 annotate 및 update_annot 함수를 활용할 수 있습니다. annotate 함수는 지정된 좌표에 주석을 배치하는 반면 update_annot은 마우스를 올려 놓은 데이터 포인트의 인덱스를 기반으로 텍스트와 모양을 수정합니다.
마우스를 올려 놓은 주석을 얻으려면 다음 단계를 따르세요.
구현하여 이 접근 방식을 사용하면 분산형 차트에 호버링 주석을 쉽게 추가하여 플롯을 복잡하게 하지 않고도 특정 데이터 포인트에 대한 귀중한 통찰력을 제공할 수 있습니다.
예:
제공된 코드 스니펫 산점도에서 호버링 주석의 구현을 보여줍니다.
import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) x = np.random.rand(15) y = np.random.rand(15) names = np.array(list("ABCDEFGHIJKLMNO")) c = np.random.randint(1,5,size=15) norm = plt.Normalize(1,4) cmap = plt.cm.RdYlGn fig,ax = plt.subplots() sc = plt.scatter(x,y,c=c, s=100, cmap=cmap, norm=norm) annot = ax.annotate("", xy=(0,0), xytext=(20,20),textcoords="offset points", bbox=dict(boxstyle="round", fc="w"), arrowprops=dict(arrowstyle="->")) annot.set_visible(False) def update_annot(ind): pos = sc.get_offsets()[ind["ind"][0]] annot.xy = pos text = "{}, {}".format(" ".join(list(map(str,ind["ind"]))), " ".join([names[n] for n in ind["ind"]])) annot.set_text(text) annot.get_bbox_patch().set_facecolor(cmap(norm(c[ind["ind"][0]]))) annot.get_bbox_patch().set_alpha(0.4) def hover(event): vis = annot.get_visible() if event.inaxes == ax: cont, ind = sc.contains(event) if cont: update_annot(ind) annot.set_visible(True) fig.canvas.draw_idle() else: if vis: annot.set_visible(False) fig.canvas.draw_idle() fig.canvas.mpl_connect("motion_notify_event", hover) plt.show()
위 내용은 Matplotlib 산점도에 호버링 주석을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!