ホームページ > バックエンド開発 > Python チュートリアル > Matplotlib 散布図にホバリング注釈を追加するにはどうすればよいですか?

Matplotlib 散布図にホバリング注釈を追加するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-23 05:41:18
オリジナル
954 人が閲覧しました

How to Add Hovering Annotations to Matplotlib Scatter Plots?

プロット内にホバリング注釈を作成する方法

多数のデータ ポイントを含む散布図を分析する場合、特定の注目点を特定するのは困難な場合があります。便利な解決策の 1 つは、カーソルの移動時に追加情報を表示するホバリング注釈を実装することです。

matplotlib ライブラリは、プロットに注釈を追加するための多用途の機能を提供します。ホバーリング注釈を作成するには、annotate 関数と update_annot 関数を利用できます。 annotate 関数は指定された座標に注釈を配置しますが、update_annot はホバーされたデータ ポイントのインデックスに基づいてそのテキストと外観を変更します。

ホバーされた注釈を実現するには、次の手順に従います。

  1. 必要なライブラリをインポートし、データを生成します。
  2. 散布図と非表示の注釈を作成するobject.
  3. update_annot 関数を定義して、ホバーされたポイントのインデックスに基づいて注釈のテキストと外観を更新します。
  4. カーソルの動きに基づいて注釈の表示を制御する hover 関数を実装します。
  5. motion_notify_event をホバーに接続しますfunction.

このアプローチを実装すると、散布図にホバリング注釈を簡単に追加でき、プロットを乱雑にせずに特定のデータ ポイントに対する貴重な洞察を提供できます。

例:

提供されたコード スニペットは、スキャッタ上でのホバリング アノテーションの実装を示しています。プロット:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート