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 ?
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!