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

DDD
Libérer: 2024-10-25 09:33:04
original
1003 Les gens l'ont consulté

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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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')
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!