Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich schwebende Anmerkungen für Streudiagramme in Matplotlib?
So fügen Sie schwebende Anmerkungen zu einem Diagramm hinzu
Das Kommentieren von Punkten in einem Streudiagramm ist eine häufige Aufgabe bei der Arbeit mit Daten. Matplotlib, eine Python-Bibliothek zum Erstellen von 2D-Plots, bietet eine einfache Methode zum Hinzufügen fester Anmerkungen zu einem Plot mithilfe des Befehls „annotate“. Dieser Ansatz kann sich jedoch bei der Bearbeitung zahlreicher Datenpunkte als unpraktisch erweisen, da die Darstellung möglicherweise unübersichtlich wird.
Glücklicherweise gibt es eine Lösung, bei der dynamische Anmerkungen erstellt werden, die nur angezeigt werden, wenn der Cursor über einem bestimmten Datenpunkt steht. Diese Methode erfordert eine geringfügige Änderung der Annotate-Funktion in Verbindung mit einer Callback-Funktion zur Verarbeitung von Cursorereignissen.
Hier ist ein Beispielcode, der die Implementierung demonstriert:
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()
Dieser Code fügt einen ToolTip hinzu erscheint, wenn die Maus über einen Datenpunkt fährt, und zeigt seine Koordinaten und seinen Namen an. Die update_annot-Funktion aktualisiert dynamisch die Position und den Inhalt der Anmerkung abhängig vom schwebenden Punkt.
Dieser Ansatz ermöglicht eine übersichtliche Visualisierung mit leicht zugänglichen Informationen zu jedem Datenpunkt und eignet sich somit für die interaktive Datenexploration.
Das obige ist der detaillierte Inhalt vonWie erstelle ich schwebende Anmerkungen für Streudiagramme in Matplotlib?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!