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 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 09:13:28987parcourir

## How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

Matplotlib Discrete Colorbar

Introduction

Matplotlib est une bibliothèque Python populaire pour la visualisation de données. Les nuages ​​de points sont un type courant de graphique utilisé pour afficher la distribution bivariée des points de données. Dans certains cas, il est souhaitable de représenter chaque point de données avec une couleur unique. Cet article montrera comment créer une barre de couleurs discrète pour un nuage de points dans Matplotlib, mappant efficacement les valeurs de balises entières à des couleurs spécifiques.

Utilisation d'une BoundaryNorm

Pour créer une barre de couleurs discrète, une BoundaryNorm est utilisée comme normalisateur pour le nuage de points. Un BoundaryNorm divise la plage de données en un ensemble de groupes, chaque groupe correspondant à une couleur spécifique. Le code Python suivant montre comment créer une barre de couleurs discrète à l'aide d'une BoundaryNorm :

<code class="python">import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt

x = np.random.rand(20)  # Define the data
y = np.random.rand(20)  # Define the data
tag = np.random.randint(0, 20, 20)

cmap = plt.cm.jet  # Define the colormap
bounds = np.linspace(0, 20, 21)  # Define the bins for the colorbar
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)  # Create the BoundaryNorm

plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)  # Create the scatterplot with the discrete colorbar

plt.colorbar()  # Display the colorbar</code>

Ce code créera un nuage de points avec 20 points de données générés aléatoirement, chacun étant affecté d'une valeur de balise entière aléatoire comprise entre 0 et 19. colorbar affichera 20 couleurs distinctes, chaque couleur correspondant à une valeur de balise spécifique.

Personnalisation de la barre de couleurs

Dans certains cas, il peut être souhaitable de personnaliser les couleurs de la barre de couleurs. Ceci peut être réalisé en créant une palette de couleurs personnalisée à l'aide de la classe LinearSegmentedColormap. Le code Python suivant montre comment créer une palette de couleurs personnalisée avec une couleur grise pour la valeur de balise 0 et différentes couleurs pour les valeurs de balise 1 à 20 :

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]  # Extract all colors from the original colormap
cmaplist[0] = (.5, .5, .5, 1.0)  # Override the first color with gray

cmap = mpl.colors.LinearSegmentedColormap.from_list('Custom cmap', cmaplist, cmap.N)  # Create the custom colormap</code>

Une fois la palette de couleurs personnalisée définie, elle peut être utilisée dans le nuage de points comme suit :

<code class="python">plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)</code>

Ce code créera un nuage de points avec les mêmes points de données qu'avant, mais la barre de couleurs affichera désormais les couleurs personnalisées avec le gris représentant la valeur de balise 0.

Optimisation pour la clarté visuelle

Bien que l'utilisation d'une barre de couleurs discrète avec un grand nombre de couleurs puisse offrir un large éventail d'options, il est important de prendre en compte la clarté visuelle. Un grand nombre de couleurs distinctes peut rendre difficile la distinction visuelle entre des valeurs spécifiques. Dans certains cas, il peut être avantageux d'utiliser un nombre réduit de couleurs ou de regrouper les valeurs de balises similaires dans des plages de couleurs. En fin de compte, le choix optimal des couleurs et des gammes de couleurs dépendra des données spécifiques et de l'utilisation prévue de la parcelle.

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