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

Matplotlib에서 산점도에 대한 호버링 주석을 만드는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-14 08:46:10
원래의
322명이 탐색했습니다.

How to Create Hovering Annotations for Scatter Plots in Matplotlib?

도표에 호버 주석을 추가하는 방법

산점도의 점에 주석을 추가하는 것은 데이터 작업 시 일반적인 작업입니다. 2D 플롯 생성을 위한 Python 라이브러리인 Matplotlib는 annotate 명령을 사용하여 플롯에 고정 주석을 추가하는 간단한 방법을 제공합니다. 그러나 이 접근 방식은 플롯이 복잡해질 수 있으므로 수많은 데이터 포인트를 처리할 때 실용적이지 않을 수 있습니다.

다행히도 특정 데이터 포인트 위에 커서를 놓을 때만 나타나는 동적 주석을 생성하는 솔루션이 있습니다. 이 방법을 사용하려면 커서 이벤트를 처리하기 위해 콜백 함수와 함께 주석 함수를 약간 수정해야 합니다.

다음은 구현을 보여주는 예제 코드입니다.

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()
로그인 후 복사

이 코드는 다음과 같은 도구 설명을 추가합니다. 데이터 포인트 위로 마우스를 가져가면 해당 좌표와 이름이 표시됩니다. update_annot 기능은 마우스를 올린 지점에 따라 주석의 위치와 내용을 동적으로 업데이트합니다.

이 접근 방식을 사용하면 각 데이터 포인트에 대한 정보에 쉽게 액세스할 수 있어 깔끔한 시각화가 가능하므로 대화형 데이터 탐색에 적합합니다.

위 내용은 Matplotlib에서 산점도에 대한 호버링 주석을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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