Matplotlib est une bibliothèque largement utilisée pour la visualisation de données en Python. Parmi ses éléments, la barre de couleur est cruciale pour représenter les informations numériques sous forme de couleur sur un graphique. Toutefois, la barre de couleur par défaut ne garantit pas toujours une représentation claire des caractéristiques des données. Avec les bonnes personnalisations, il est possible d’améliorer l’effet visuel et de rendre l’intention du graphique plus claire. Cet article explore en détail l’utilisation de base des barres de couleur, ainsi que des méthodes avancées pour les personnaliser et ainsi réaliser des visualisations de données efficaces.
Utilisation de base des barres de couleur
La barre de couleur est un outil permettant de montrer la correspondance entre les couleurs et les valeurs des données dans un graphique créé avec Matplotlib. Elle joue un rôle crucial dans la compréhension visuelle de la portée et de la distribution des données, notamment dans des graphiques comme les cartes thermiques ou les nuages de points. Voici les étapes de base pour ajouter une barre de couleur.
Ajout d’une barre de couleur
Avec Matplotlib, vous pouvez ajouter une barre de couleur en utilisant plt.colorbar()
. Voici un exemple simple d’ajout d’une barre de couleur à une carte thermique.
import matplotlib.pyplot as plt
import numpy as np
# Création des données d'exemple
data = np.random.rand(10, 10)
# Dessin de la carte thermique
plt.imshow(data, cmap='viridis')
# Ajout de la barre de couleur
plt.colorbar()
# Affichage du graphique
plt.show()
Lorsque ce code est exécuté, une barre de couleur apparaît sur le côté droit de la carte thermique, permettant de visualiser comment les couleurs correspondent aux valeurs des données.
Rôle de base de la barre de couleur
La barre de couleur aide à comprendre les données de la manière suivante :
- Affichage de la plage des données : La barre de couleur montre visuellement l’étendue des valeurs, allant de la valeur minimale à la valeur maximale des données.
- Correspondance entre les valeurs et les couleurs : Étant donné que chaque valeur est associée à une couleur spécifique, il suffit de regarder la couleur pour se faire une idée générale de la valeur correspondante.
Bien que la barre de couleur par défaut soit simple, il est possible d’ajuster son apparence et son échelle pour rendre la communication des données encore plus efficace.
Ajustement de la carte de couleurs et de l’échelle des données
Pour maximiser l’effet visuel de la barre de couleur, il est important de choisir une carte de couleurs et une échelle adaptées aux données. Matplotlib propose diverses cartes de couleurs et options d’échelle que vous pouvez utiliser pour mettre en valeur les caractéristiques des données.
Sélection de la carte de couleurs
La carte de couleurs est un schéma de couleurs qui associe des valeurs numériques à des couleurs. Matplotlib propose de nombreuses cartes de couleurs parmi lesquelles vous pouvez choisir en fonction de vos besoins. Voici quelques exemples de cartes de couleurs :
- Données continues :
viridis
ouplasma
(les couleurs changent de manière cohérente en termes de luminosité et de saturation). - Données bidirectionnelles (données comprenant des valeurs positives et négatives) :
seismic
oucoolwarm
. - Données catégorielles :
tab10
ouSet3
.
Voici un exemple montrant comment changer la carte de couleurs :
import matplotlib.pyplot as plt
import numpy as np
# Création des données d'exemple
data = np.random.rand(10, 10)
# Dessin de la carte thermique (changement de la carte de couleurs à plasma)
plt.imshow(data, cmap='plasma')
# Ajout de la barre de couleur
plt.colorbar()
# Affichage du graphique
plt.show()
Ajustement de l’échelle des données
Il est essentiel d’ajuster la barre de couleur en fonction de l’échelle des données. Voici comment vous pouvez définir l’échelle :
- Limiter la plage : Utilisez
vmin
etvmax
pour spécifier explicitement la plage des données. - Mettre en évidence une plage spécifique : Excluez les valeurs extrêmes et concentrez-vous sur la plage d’intérêt.
Voici un exemple où vmin
et vmax
sont spécifiés :
# Dessin de la carte thermique (plage spécifiée)
plt.imshow(data, cmap='viridis', vmin=0.2, vmax=0.8)
# Ajout de la barre de couleur
plt.colorbar()
plt.show()
Sélection de la carte de couleurs et de l’échelle en fonction des données
- Plage de données étroite : L’utilisation de cartes de couleurs vives est visuellement efficace.
- Données scientifiques : Si la sélection de la carte de couleurs suit des critères spécifiques, ceux-ci doivent être respectés.
Choisir la carte de couleurs et l’échelle appropriées peut améliorer considérablement la clarté visuelle de l’ensemble du graphique.
Personnalisation de l’apparence de la barre de couleur
En personnalisant l’apparence de la barre de couleur, vous pouvez améliorer la lisibilité des données et rendre le graphique plus élégant. Matplotlib permet une grande flexibilité dans la personnalisation du titre, des étiquettes, de la position et de la taille de la police de la barre de couleur.
Ajouter un titre à la barre de couleur
En ajoutant un titre à la barre de couleur, vous pouvez clarifier ce que les couleurs représentent. Utilisez colorbar.set_label()
pour ce faire.
import matplotlib.pyplot as plt
import numpy as np
# Création des données d'exemple
data = np.random.rand(10, 10)
# Dessin de la carte thermique
plt.imshow(data, cmap='viridis')
# Ajout de la barre de couleur
cbar = plt.colorbar()
cbar.set_label('Valeur des données', fontsize=12)
plt.show()
Changer la taille et le style de la police des étiquettes
Vous pouvez ajuster la taille de la police des étiquettes des marques (ticks) de la barre de couleur pour adapter le design. L’exemple suivant montre comment changer la taille et le style de la police :
cbar.ax.tick_params(labelsize=10, labelcolor='blue')
Ajuster la position de la barre de couleur
Par défaut, la barre de couleur apparaît à droite du graphique, mais vous pouvez ajuster sa position et sa taille en utilisant shrink
et aspect
.
plt.colorbar(shrink=0.8, aspect=20)
shrink
: Réduit la longueur de la barre de couleur (valeur entre 0 et 1).aspect
: Ajuste le rapport d’aspect de la barre de couleur.
Définir explicitement la gamme des couleurs et les marques
Vous pouvez définir manuellement les marques sur la barre de couleur pour faciliter la compréhension des données en utilisant colorbar.set_ticks()
.
import matplotlib.ticker as ticker
cbar.set_ticks([0.2, 0.5, 0.8])
cbar.set_ticklabels(['Bas', 'Moyenne', 'Élevée'])
Appliquer un design complexe
Si vous souhaitez personnaliser davantage, vous pouvez accéder directement à la zone de dessin de la barre de couleur.
cbar.ax.set_title('Légende des couleurs', fontsize=10, loc='left')
Choisir un design approprié
- Choisissez le design en fonction du sujet du graphique et de l’audience.
- Pour les publications scientifiques, optez pour un design simple et lisible, et pour les présentations, privilégiez un design plus attrayant.
En affinant le design de la barre de couleur, vous pouvez améliorer de manière significative l’efficacité de la visualisation des données.
Création d’une barre de couleur discrète
Une barre de couleur discrète est utilisée lorsque vous souhaitez colorier des catégories ou classes discrètes, plutôt que des données continues. Elle est particulièrement adaptée pour afficher les caractéristiques des données catégorielles et joue un rôle important dans l’analyse des données ou les présentations.
Nécessité d’une barre de couleur discrète
- Affichage des données catégorielles : Utilisée pour les données géographiques, les résultats de classification ou les données divisées en plages spécifiques.
- Distinction claire des couleurs : Permet de distinguer visuellement facilement les différentes catégories.
Création d’une barre de couleur discrète
Avec Matplotlib, vous pouvez utiliser BoundaryNorm
pour discrétiser la carte de couleurs.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import BoundaryNorm
from matplotlib.cm import get_cmap
# Création des données d'exemple
data = np.random.rand(10, 10) * 100
# Définition des bornes pour la barre de couleur
bounds = [0, 20, 40, 60, 80, 100] # Valeurs de séparation
cmap = get_cmap('viridis', len(bounds) - 1) # Carte de couleurs ajustée au nombre de catégories
norm = BoundaryNorm(bounds, cmap.N)
# Dessin de la carte thermique
plt.imshow(data, cmap=cmap, norm=norm)
# Ajout de la barre de couleur
cbar = plt.colorbar(ticks=bounds) # Utilisation des bornes comme marques
cbar.set_label('Catégories')
plt.show()
Dans cet exemple, les valeurs de données sont mappées sur les plages définies (par exemple, 0-20, 20-40, etc.), chaque plage ayant une couleur différente.
Personnalisation des étiquettes de la barre de couleur
Vous pouvez définir des étiquettes pour chaque catégorie afin de clarifier ce que chaque couleur représente sur la barre de couleur :
cbar.set_ticklabels(['Très faible', 'Faible', 'Moyenne', 'Élevée', 'Très élevée'])
Création d’une carte de couleurs personnalisée
Si vous souhaitez spécifier des couleurs particulières, vous pouvez créer manuellement une carte de couleurs en utilisant ListedColormap
:
from matplotlib.colors import ListedColormap
colors = ['blue', 'green', 'yellow', 'orange', 'red']
cmap = ListedColormap(colors)
norm = BoundaryNorm(bounds, len(colors))
plt.imshow(data, cmap=cmap, norm=norm)
plt.colorbar(ticks=bounds)
plt.show()
Scénarios d’utilisation des barres de couleur discrètes
- Classification des régions sur une carte (ex : densité de population, zones climatiques).
- Visualisation des résultats de classification d’un modèle d’apprentissage automatique (ex : affichage des étiquettes de classes).
- Coloration des résultats de notation par plage pour une compréhension intuitive.
Les barres de couleur discrètes aident à organiser visuellement les données catégorielles et sont un outil puissant pour améliorer la persuasion dans les présentations et les analyses.
Création d’une barre de couleur avec échelle logarithmique
Lorsqu’il y a une large plage de données, l’utilisation d’une échelle logarithmique pour la barre de couleur permet de mieux visualiser les valeurs extrêmes et petites. Cela est particulièrement utile pour les données scientifiques ou financières, où les valeurs varient de manière exponentielle.
Nécessité d’une échelle logarithmique
- Gestion d’une large plage de données : Lorsque la différence entre les valeurs minimales et maximales est très grande.
- Maintien de l’équilibre entre les détails et la vue d’ensemble : Permet de visualiser à la fois les petites et grandes valeurs de manière précise.
- Représentation standard des données scientifiques : Les échelles logarithmiques sont courantes dans certaines données scientifiques (ex : magnitude des tremblements de terre, observations astronomiques).
Création d’une barre de couleur avec échelle logarithmique
Matplotlib permet d’appliquer une échelle logarithmique en utilisant LogNorm
.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm
# Création des données d'exemple
data = np.random.rand(10, 10) * 1000
data[0, 0] = 0.01 # Ajouter une petite valeur pour tester l'effet de l'échelle
# Dessin de la carte thermique (échelle logarithmique appliquée)
plt.imshow(data, cmap='viridis', norm=LogNorm(vmin=0.01, vmax=1000))
# Ajout de la barre de couleur
cbar = plt.colorbar()
cbar.set_label('Valeurs sur échelle logarithmique')
plt.show()
Ce code applique une échelle logarithmique à la barre de couleur, affichant les valeurs de 0.01 à 1000 de manière appropriée.
Ajustement de l’échelle logarithmique pour les petites valeurs
Si les données contiennent des zéros ou des valeurs négatives, une erreur se produit avec une échelle logarithmique. Vous pouvez résoudre cela de la manière suivante :
- Définir une valeur minimale : Remplacer les zéros par une petite valeur positive.
data[data <= 0] = 0.01
- Adapter la carte de couleurs : Par exemple, définir une couleur spécifique pour les valeurs négatives et ajuster l'échelle.
Ajustement des marques sur la barre de couleur
Vous pouvez configurer explicitement la disposition des marques sur la barre de couleur pour la rendre plus intuitive à comprendre :
from matplotlib.ticker import LogLocator
cbar = plt.colorbar()
cbar.set_ticks(LogLocator(base=10.0, subs=None, numticks=10))
cbar.set_label('Valeurs sur échelle logarithmique (marques personnalisées)')
Exemple d'application : Utilisation de l'échelle logarithmique
- Carte thermique : Mettre en évidence les petites variations dans les données scientifiques (ex : intensité du rayonnement, distribution de la luminosité).
- Nuage de points : Visualiser les données financières (ex : variations du prix des actions) pour comparer les grandes et petites valeurs.
- Données géographiques : Afficher des plages extrêmes sur des cartes comme la distribution des épicentres des tremblements de terre ou la densité de population.
Précautions
- Les données contenant des zéros ou des valeurs négatives ne conviennent pas pour une échelle logarithmique, il est donc nécessaire de les traiter au préalable.
- Il est important de s'assurer que l'échelle logarithmique est adaptée pour représenter les données de manière efficace.
En utilisant efficacement une barre de couleur avec échelle logarithmique, vous pouvez améliorer la précision de la visualisation et communiquer de manière plus précise les caractéristiques des données.
Partager une barre de couleur entre plusieurs graphiques
Lorsqu'il y a plusieurs graphiques à créer, l'ajout de barres de couleur distinctes pour chaque graphique peut rendre l'affichage encombré. En particulier, si tous les graphiques partagent la même plage de données, il est possible de partager une barre de couleur, ce qui améliore la cohérence du graphique tout en économisant de l'espace.
Scénarios où le partage de la barre de couleur est utile
- Graphiques comparatifs : Comparer la visualisation de différents ensembles de données ou conditions.
- Graphiques avec plage de données uniforme : Tous les graphiques partagent le même intervalle de valeurs et sont mappés avec les mêmes couleurs.
- Optimisation de l'espace : Partager une barre de couleur permet de simplifier la mise en page du graphique.
Partager une barre de couleur
Matplotlib permet de partager une barre de couleur entre plusieurs graphiques en utilisant fig.colorbar()
. Voici un exemple de mise en œuvre :
import matplotlib.pyplot as plt
import numpy as np
# Création des données d'exemple
data1 = np.random.rand(10, 10) * 100
data2 = np.random.rand(10, 10) * 100
# Création de la figure et des axes
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
# Dessin des cartes thermiques
im1 = axs[0].imshow(data1, cmap='viridis', vmin=0, vmax=100)
im2 = axs[1].imshow(data2, cmap='viridis', vmin=0, vmax=100)
# Partage de la barre de couleur
cbar = fig.colorbar(im1, ax=axs, orientation='vertical')
cbar.set_label('Barre de couleur partagée')
plt.show()
Ce code montre que les deux graphiques partagent le même échelle, avec la barre de couleur liée aux deux graphiques.
Ajuster la position et l'orientation de la barre de couleur
Vous pouvez ajuster l'orientation et la position de la barre de couleur pour optimiser la mise en page des graphiques lorsque vous partagez la barre. Par exemple, pour positionner la barre de couleur horizontalement en bas :
cbar = fig.colorbar(im1, ax=axs, orientation='horizontal', fraction=0.046, pad=0.1)
orientation
: Définir l'orientation à'horizontal'
ou'vertical'
.fraction
: Ajuster la largeur de la barre de couleur.pad
: Ajuster l'espace entre le graphique et la barre de couleur.
Ajuster la position de la barre de couleur pour plusieurs graphiques
Lorsque vous partagez la barre de couleur entre plusieurs graphiques, vous pouvez spécifier sa position avec fig.colorbar()
:
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
im1 = axs[0].imshow(data, cmap='viridis')
im2 = axs[1].imshow(data, cmap='viridis')
# Positionner la barre de couleur sur le côté droit des deux graphiques
cbar = fig.colorbar(im1, ax=axs, orientation='vertical', fraction=0.05, pad=0.04)
cbar.set_label('Plage des données')
plt.show()
Exemples d'application
- Carte thermique : Lorsque plusieurs étiquettes doivent être affichées, positionner la barre de couleur en bas pour économiser de l'espace.
- Données géographiques : Positionner la barre de couleur à l'extérieur pour maximiser l'affichage de la carte.
- Données scientifiques : Pour un graphique plus large, positionner la barre de couleur horizontalement en bas.
Meilleures pratiques pour la position de la barre de couleur
- Choisir la position de la barre de couleur en fonction de la lisibilité du graphique.
- Veiller à ce que les étiquettes et les unités soient clairement affichées sur la barre de couleur.
- Assurer une disposition intuitive pour que les données et la barre de couleur soient facilement interprétables.
Ajuster correctement la position de la barre de couleur peut améliorer l'impact visuel et la capacité de communication des données dans vos graphiques.
Résumé
Dans cet article, nous avons exploré comment personnaliser la barre de couleur avec Matplotlib en Python. Nous avons couvert les bases de son utilisation, ainsi que la sélection des cartes de couleurs, l'ajustement de l'échelle et l'apparence, et la création de barres de couleurs discrètes ou avec échelle logarithmique. Nous avons également abordé des techniques pratiques telles que le partage de la barre de couleur entre plusieurs graphiques et son ajustement de position.
La barre de couleur n'est pas seulement un élément supplémentaire dans la visualisation des données, mais un outil clé pour communiquer visuellement les caractéristiques des données. En personnalisant correctement la barre de couleur, vous pouvez créer des graphiques plus clairs et plus convaincants.