Heim > Backend-Entwicklung > Python-Tutorial > Wie füge ich schwebende Anmerkungen zu Matplotlib-Streudiagrammen hinzu?

Wie füge ich schwebende Anmerkungen zu Matplotlib-Streudiagrammen hinzu?

Barbara Streisand
Freigeben: 2024-12-23 05:41:18
Original
979 Leute haben es durchsucht

How to Add Hovering Annotations to Matplotlib Scatter Plots?

So erstellen Sie schwebende Anmerkungen in einem Diagramm

Bei der Analyse von Streudiagrammen mit zahlreichen Datenpunkten kann die Identifizierung spezifischer Punkte von Interesse eine Herausforderung sein. Eine praktische Lösung besteht darin, schwebende Anmerkungen zu implementieren, die bei Cursorbewegungen zusätzliche Informationen anzeigen.

Die Matplotlib-Bibliothek bietet eine vielseitige Funktionalität zum Hinzufügen von Anmerkungen zu Diagrammen. Um schwebende Anmerkungen zu erstellen, können wir die Funktionen annotate und update_annot verwenden. Die Annotate-Funktion positioniert eine Anmerkung an einer angegebenen Koordinate, während update_annot ihren Text und ihr Erscheinungsbild basierend auf dem Index des schwebenden Datenpunkts ändert.

Um schwebende Anmerkungen zu erhalten, befolgen Sie diese Schritte:

  1. Importieren Sie die erforderlichen Bibliotheken und generieren Sie Ihre Daten.
  2. Erstellen Sie ein Streudiagramm und eine unsichtbare Anmerkung Objekt.
  3. Definieren Sie die Funktion update_annot, um den Text und das Erscheinungsbild der Anmerkung basierend auf dem Index des schwebenden Punkts zu aktualisieren.
  4. Implementieren Sie die Hover-Funktion, um die Sichtbarkeit der Anmerkung basierend auf der Cursorbewegung zu steuern.
  5. Verbinden Sie das motion_notify_event mit der Hover-Funktion.

Von Wenn Sie diesen Ansatz implementieren, können Sie ganz einfach schwebende Anmerkungen zu Ihren Streudiagrammen hinzufügen und so wertvolle Einblicke in bestimmte Datenpunkte liefern, ohne das Diagramm zu überladen.

Beispiel:

Der bereitgestellte Code Snippet demonstriert die Implementierung schwebender Anmerkungen in einem Streudiagramm:

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()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie füge ich schwebende Anmerkungen zu Matplotlib-Streudiagrammen hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage