Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencipta Anotasi Berlegar untuk Plot Taburan dalam Matplotlib?
Cara Menambah Anotasi Berlegar pada Plot
Menganotasi titik pada plot berselerak ialah tugas biasa apabila bekerja dengan data. Matplotlib, perpustakaan Python untuk mencipta plot 2D, menyediakan kaedah mudah untuk menambah anotasi tetap pada plot menggunakan arahan anotasi. Walau bagaimanapun, pendekatan ini boleh menjadi tidak praktikal apabila berurusan dengan banyak titik data kerana plot mungkin menjadi berantakan.
Nasib baik, terdapat penyelesaian yang melibatkan penciptaan anotasi dinamik yang hanya muncul apabila kursor menuding pada titik data tertentu. Kaedah ini memerlukan sedikit pengubahsuaian fungsi anotasi bersama-sama dengan fungsi panggil balik untuk mengendalikan acara kursor.
Berikut ialah contoh kod yang menunjukkan pelaksanaan:
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()
Kod ini menambah alatPetua yang muncul apabila tetikus melayang di atas titik data, memaparkan koordinat dan namanya. Fungsi update_annot mengemas kini kedudukan dan kandungan anotasi secara dinamik bergantung pada titik yang dilegar.
Pendekatan ini membolehkan visualisasi bebas kekacauan dengan maklumat yang mudah diakses tentang setiap titik data, menjadikannya sesuai untuk penerokaan data interaktif.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Anotasi Berlegar untuk Plot Taburan dalam Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!