Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menambah Anotasi Berlegar pada Plot Taburan Matplotlib?

Bagaimana untuk Menambah Anotasi Berlegar pada Plot Taburan Matplotlib?

Barbara Streisand
Lepaskan: 2024-12-23 05:41:18
asal
951 orang telah melayarinya

How to Add Hovering Annotations to Matplotlib Scatter Plots?

Cara Membuat Anotasi Berlegar dalam Plot

Apabila menganalisis plot taburan dengan banyak titik data, mengenal pasti tempat menarik tertentu boleh menjadi mencabar. Satu penyelesaian yang mudah ialah melaksanakan anotasi berlegar yang memaparkan maklumat tambahan semasa pergerakan kursor.

Pustaka matplotlib menyediakan fungsi serba boleh untuk menambahkan anotasi pada plot. Untuk membuat anotasi berlegar, kami boleh menggunakan fungsi anotasi dan update_annot. Fungsi anotasi meletakkan anotasi pada koordinat yang ditentukan, manakala update_annot mengubah teks dan penampilannya berdasarkan indeks titik data yang dilegar.

Untuk mencapai anotasi yang dilegar, ikut langkah berikut:

  1. Import perpustakaan yang diperlukan dan jana data anda.
  2. Buat plot taburan dan objek anotasi yang tidak kelihatan.
  3. Tentukan fungsi update_annot untuk mengemas kini teks dan penampilan anotasi berdasarkan indeks titik yang dilegar.
  4. Laksanakan fungsi tuding untuk mengawal keterlihatan anotasi berdasarkan pergerakan kursor.
  5. Sambungkan motion_notify_event ke tuding fungsi.

Dengan melaksanakan pendekatan ini, anda boleh menambahkan anotasi berlegar dengan mudah pada plot taburan anda, memberikan cerapan berharga tentang titik data tertentu tanpa mengacaukan plot.

Contoh:

Coretan kod yang disediakan menunjukkan pelaksanaan anotasi berlegar pada plot berselerak:

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()
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menambah Anotasi Berlegar pada Plot Taburan Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan