如何在圖中建立懸停註解
分析具有大量資料點的散佈圖時,識別特定的興趣點可能具有挑戰性。一種方便的解決方案是實現懸停註釋,在遊標移動時顯示附加資訊。
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中文網其他相關文章!