La visualisation des distributions de données est une pierre angulaire de l’analyse de données efficace, et les histogrammes sont un outil puissant à cette fin. Fréquemment, les analystes ont besoin de comparer les distributions de deux ensembles de données ou plus. Matplotlib, une bibliothèque de tracé Python largement utilisée, offre plusieurs manières élégantes d’effectuer cette comparaison. Cet article explore trois méthodes clés pour tracer plusieurs histogrammes dans Matplotlib, avec des exemples et des explications illustratifs.
Table des matières
- Méthode 1 : Superposition d’histogrammes
- Méthode 2 : Histogrammes côte à côte
- Méthode 3 : Personnalisation de l’apparence des histogrammes
- Conclusion
- FAQ
Méthode 1 : Superposition d’histogrammes
L’approche la plus simple consiste à superposer directement les histogrammes sur les mêmes axes. Cela fournit une comparaison visuelle immédiate des formes et des distributions. Cependant, cette méthode peut devenir moins efficace si les distributions sont très similaires ou si la densité des données est élevée, ce qui conduit à des détails masqués. La transparence est la clé pour atténuer ce problème.
import matplotlib.pyplot as plt
import numpy as np
# Données d'échantillon
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 1 # Décalé pour une meilleure visualisation
# Tracé
plt.hist(data1, alpha=0.5, label='Données 1', bins=30)
plt.hist(data2, alpha=0.5, label='Données 2', bins=30)
plt.xlabel('Valeur')
plt.ylabel('Fréquence')
plt.title('Histogrammes superposés')
plt.legend(loc='upper right')
plt.show()
Ce code utilise le paramètre alpha
pour contrôler la transparence, permettant aux deux histogrammes d’être clairement visibles. Des étiquettes sont ajoutées pour une identification facile, et une légende améliore la clarté.
Méthode 2 : Histogrammes côte à côte
Pour une meilleure clarté, en particulier lors de la comparaison de distributions similaires, les histogrammes côte à côte sont fortement recommandés. La fonctionnalité de sous-tracé de Matplotlib rend cela simple.
import matplotlib.pyplot as plt
import numpy as np
# Données d'échantillon (identiques à celles ci-dessus)
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 1
# Tracé côte à côte
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
axes[0].hist(data1, bins=20)
axes[0].set_title('Données 1')
axes[0].set_xlabel('Valeur')
axes[0].set_ylabel('Fréquence')
axes[1].hist(data2, bins=20)
axes[1].set_title('Données 2')
axes[1].set_xlabel('Valeur')
axes[1].set_ylabel('Fréquence')
plt.tight_layout()
plt.show()
Ce code crée une figure avec deux sous-tracés, chacun dédié à un seul histogramme. plt.tight_layout()
assure un espacement approprié entre les sous-tracés.
Méthode 3 : Personnalisation de l’apparence des histogrammes
Une distinction visuelle accrue peut être obtenue en utilisant différentes couleurs, couleurs de bord, styles de ligne, ou même types d’histogrammes (par exemple, barre vs. étape).
import matplotlib.pyplot as plt
import numpy as np
# Données d'échantillon (identiques à celles ci-dessus)
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 1
# Tracé avec différents styles
plt.hist(data1, bins=20, color='skyblue', edgecolor='black', label='Données 1')
plt.hist(data2, bins=20, color='coral', edgecolor='black', alpha=0.7, label='Données 2', histtype='step')
plt.xlabel('Valeur')
plt.ylabel('Fréquence')
plt.title('Histogrammes avec différents styles')
plt.legend()
plt.show()
Cet exemple montre l’utilisation de différentes couleurs, couleurs de bord, et le paramètre histtype
pour créer des histogrammes visuellement distincts. La légende reste cruciale pour un étiquetage correct.
Conclusion
Matplotlib offre une boîte à outils flexible et puissante pour créer des visualisations informatives des distributions de données. Le choix de la méthode pour tracer plusieurs histogrammes dépend fortement des caractéristiques spécifiques des données et du niveau de détail souhaité dans la comparaison. Les histogrammes superposés conviennent aux vérifications rapides, tandis que les tracés côte à côte et personnalisés offrent une clarté et un impact visuel améliorés.
FAQ
- Q : Comment ajuster le nombre de classes ? R : Utilisez le paramètre
bins
dansplt.hist()
. Expérimentez pour trouver ce qui révèle le mieux la structure des données. - Q : Puis-je utiliser différentes couleurs et étiquettes ? R : Absolument ! Utilisez les paramètres
color
etlabel
, et incluez toujours une légende à l’aide deplt.legend()
. - Q : Comment puis-je enregistrer le graphique ? R : Utilisez
plt.savefig('nomdefichier.png')
(ou une fonction similaire) pour enregistrer votre graphique. Remplacez'nomdefichier.png'
par votre nom de fichier et votre extension préférés. - Q : Mes histogrammes se chevauchent trop. Que puis-je faire ? R : Essayez des histogrammes côte à côte, augmentez la transparence (
alpha
), utilisez différentes optionshisttype
, ou envisagez de normaliser vos données si les échelles sont significativement différentes.