> 백엔드 개발 > 파이썬 튜토리얼 > Matplotlib 산점도에 호버링 주석을 추가하는 방법은 무엇입니까?

Matplotlib 산점도에 호버링 주석을 추가하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-23 05:41:18
원래의
954명이 탐색했습니다.

How to Add Hovering Annotations to Matplotlib Scatter Plots?

플롯에서 호버링 주석을 만드는 방법

수많은 데이터 포인트가 포함된 산점도를 분석할 때 특정 관심 지점을 식별하는 것이 어려울 수 있습니다. 한 가지 편리한 솔루션은 커서 이동 시 추가 정보를 표시하는 호버링 주석을 구현하는 것입니다.

matplotlib 라이브러리는 플롯에 주석을 추가하기 위한 다양한 기능을 제공합니다. 호버링 주석을 생성하려면 annotate 및 update_annot 함수를 활용할 수 있습니다. annotate 함수는 지정된 좌표에 주석을 배치하는 반면 update_annot은 마우스를 올려 놓은 데이터 포인트의 인덱스를 기반으로 텍스트와 모양을 수정합니다.

마우스를 올려 놓은 주석을 얻으려면 다음 단계를 따르세요.

  1. 필요한 라이브러리를 가져오고 데이터를 생성합니다.
  2. 분산형 차트와 보이지 않는 주석을 만듭니다. object.
  3. update_annot 함수를 정의하여 마우스 오버 지점의 인덱스를 기반으로 주석의 텍스트와 모양을 업데이트합니다.
  4. 커서 이동에 따라 주석의 가시성을 제어하는 ​​마우스 오버 기능을 구현합니다.
  5. motion_notify_event를 호버 기능에 연결합니다.

구현하여 이 접근 방식을 사용하면 분산형 차트에 호버링 주석을 쉽게 추가하여 플롯을 복잡하게 하지 않고도 특정 데이터 포인트에 대한 귀중한 통찰력을 제공할 수 있습니다.

예:

제공된 코드 스니펫 산점도에서 호버링 주석의 구현을 보여줍니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿