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