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()
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!