Maison > développement back-end > Tutoriel Python > Comment créer des annotations de survol dans les nuages ​​de points Matplotlib ?

Comment créer des annotations de survol dans les nuages ​​de points Matplotlib ?

Mary-Kate Olsen
Libérer: 2025-01-01 08:54:10
original
468 Les gens l'ont consulté

How to Create Hovering Annotations in Matplotlib Scatter Plots?

Annotations survolées dans les nuages ​​de points Matplotlib

Lors de l'analyse des nuages ​​de points, il peut être utile d'afficher les données spécifiques associées à des points individuels. En ajoutant des annotations qui apparaissent au survol, vous pouvez rapidement identifier les valeurs aberrantes et autres points d'intérêt notables.

Mise en œuvre

En utilisant les capacités d'annotation de Matplotlib, nous pouvons créer des des annotations qui ne deviennent visibles que lorsque le curseur passe près d'un point spécifique. Le code suivant illustre cette approche :

import matplotlib.pyplot as plt
import numpy as np

# Generate random scatter plot data
x = np.random.rand(15)
y = np.random.rand(15)
names = np.array(list("ABCDEFGHIJKLMNO"))

# Create scatter plot and annotation
fig, ax = plt.subplots()
sc = plt.scatter(x, y, c=np.random.randint(1, 5, size=15), s=100)
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)

# Define hover function to update annotation
def hover(event):
    # Check if hover is within axis and over a point
    if event.inaxes == ax and annot.get_visible():
        cont, ind = sc.contains(event)
        if cont:
            # Update annotation with point data
            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"]]))
            # Show annotation and update figure
            annot.set_text(text)
            annot.set_visible(True)
            fig.canvas.draw_idle()
        else:
            # Hide annotation
            annot.set_visible(False)
            fig.canvas.draw_idle()

# Connect hover event to function
fig.canvas.mpl_connect("motion_notify_event", hover)

plt.show()
Copier après la connexion

Lorsque vous survolez différents points du nuage de points, l'annotation apparaîtra et affichera les données associées, offrant un accès rapide aux informations importantes sans encombrer le tracé avec des étiquettes permanentes. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal