Maison >développement back-end >Tutoriel Python >Comment créer une barre de couleurs discrète personnalisée pour un nuage de points dans Matplotlib ?

Comment créer une barre de couleurs discrète personnalisée pour un nuage de points dans Matplotlib ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 06:37:02640parcourir

How can you create a custom discrete colorbar for a scatterplot in Matplotlib?

Discrétisation d'une barre de couleurs Matplotlib pour un nuage de points

Dans les nuages ​​de points, une barre de couleurs continue peut ne pas toujours suffire à représenter des données discrètes. La création d'une barre de couleurs discrète est cruciale pour visualiser efficacement les modèles sous-jacents.

Pour y parvenir, la classe BoundaryNorm de Matplotlib peut être utilisée comme normalisateur pour le nuage de points. Cela garantit que les valeurs distinctes sont représentées par des couleurs uniques.

Un défi dans la personnalisation de la barre de couleurs survient lorsque l'on tente de définir une valeur spécifique à afficher en gris. Pour résoudre ce problème, la palette de couleurs existante peut être modifiée en extrayant et en remplaçant les entrées de couleur.

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]
# force the first color entry to be grey
cmaplist[0] = (.5, .5, .5, 1.0)</code>

Après avoir modifié la palette de couleurs, une palette de couleurs personnalisée peut être créée. Le BoundaryNorm est ensuite utilisé pour définir le regroupement et normaliser les données en conséquence.

<code class="python">cmap = mpl.colors.LinearSegmentedColormap.from_list(
    'Custom cmap', cmaplist, cmap.N)
bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)</code>

Avec la palette de couleurs modifiée et la normalisation en place, le nuage de points peut être rendu. Des axes distincts sont ajoutés pour accueillir la barre de couleurs, qui est personnalisée pour afficher les limites discrètes et leurs couleurs correspondantes.

<code class="python">scat = ax.scatter(x, y, c=tag, cmap=cmap, norm=norm)
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')</code>

Cette approche permet la création de barres de couleurs discrètes personnalisées qui communiquent efficacement des données discrètes dans un nuage de points, fournissant une représentation visuelle plus claire des modèles sous-jacents.

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