プロット内にホバリング注釈を作成する方法
多数のデータ ポイントを含む散布図を分析する場合、特定の注目点を特定するのは困難な場合があります。便利な解決策の 1 つは、カーソルの移動時に追加情報を表示するホバリング注釈を実装することです。
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 中国語 Web サイトの他の関連記事を参照してください。