Maison >développement back-end >Tutoriel Python >Comment créer une barre de couleurs discrète pour les nuages ​​de points dans Matplotlib ?

Comment créer une barre de couleurs discrète pour les nuages ​​de points dans Matplotlib ?

DDD
DDDoriginal
2024-10-25 09:33:041096parcourir

How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

Création d'une barre de couleurs discrète pour les nuages ​​de points Matplotlib

Générer un nuage de points avec une représentation de couleurs discrètes est une tâche courante dans la visualisation de données. Cela permet d'attribuer à chaque point de données une couleur unique basée sur une valeur spécifique.

Dans Matplotlib, la création d'une barre de couleurs discrète peut être réalisée en utilisant une BoundaryNorm comme normalisateur pour le nuage de points. Ceci est particulièrement utile lorsque vous travaillez avec des valeurs de balise entières, comme dans l'exemple fourni :

plt.scatter(x, y, c=tag)

où la balise représente la valeur de balise entière pour chaque point de données.

Les paramètres par défaut, plt .colorbar(), affiche généralement une gamme continue de couleurs. Pour créer une barre de couleurs discrète, il est nécessaire de spécifier un ensemble de couleurs discrètes. Par exemple, pour créer une barre de couleurs avec 20 couleurs, la fonction LinearSegmentedColormap.from_list peut être utilisée :

cmaplist = [cmap(i) for i in range(cmap.N)]
cmaplist[0] = (.5, .5, .5, 1.0)
cmap = mpl.colors.LinearSegmentedColormap.from_list('Custom cmap', cmaplist, cmap.N)

Ici, la première entrée de couleur est définie sur gris, qui peut être utilisée pour représenter la valeur de la balise de 0. Les autres entrées de la cmaplist définissent les couleurs des valeurs de balises restantes.

Pour créer une barre de couleurs discrète, il est également nécessaire de définir les bacs et de normaliser les données. La fonction scipy.stats.binned_statistic peut être utilisée pour calculer les classements individuels de chaque point de données et les attribuer à des groupes discrets. Ensuite, le colours.BoundaryNorm peut être utilisé pour normaliser les données et les mapper à la plage de barres de couleurs souhaitée :

bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

Enfin, un deuxième axe peut être ajouté à la figure pour créer la barre de couleurs elle-même :

ax2 = fig.add_axes([0.95, 0.1, 0.03, 0.8])
cb = plt.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm, spacing='proportional', ticks=bounds, boundaries=bounds, format='%1i')

Cela créera une barre de couleurs discrète avec le jeu de couleurs spécifié. Le nombre de couleurs discrètes peut être ajusté en modifiant les paramètres de limites et de limites.

En suivant ces étapes, il est possible de générer une barre de couleurs discrète dans Matplotlib qui représente avec précision les valeurs de balises entières sous-jacentes des points de données.

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!

Déclaration:
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