362 votes

Tracer deux histogrammes sur un seul graphique avec matplotlib

J'ai créé un histogramme en utilisant des données provenant d'un fichier et aucun problème. Maintenant, je voulais superposer les données d'un autre fichier dans le même histogramme, donc je fais quelque chose comme ceci

n,bins,patchs = ax.hist(mydata1,100)
n,bins,patchs = ax.hist(mydata2,100)

mais le problème est que pour chaque intervalle, seule la barre avec la valeur la plus élevée apparaît, et l'autre est cachée. Je me demande comment je pourrais tracer les deux histogrammes en même temps avec des couleurs différentes.

2voto

user1587329 Points 91

Au cas où vous auriez des pandas ( import pandas as pd ) ou sont d'accord pour l'utiliser :

test = pd.DataFrame([[random.gauss(3,1) for _ in range(400)], 
                     [random.gauss(4,2) for _ in range(400)]])
plt.hist(test.values.T)
plt.show()

0 votes

Je pense que l'utilisation de pandas ne fonctionnera pas si les histogrammes à comparer ont des tailles d'échantillon différentes. C'est aussi souvent le contexte dans lequel les histogrammes normalisés sont utilisés.

2voto

Solomon Vimal Points 442

Cette question a déjà fait l'objet d'une réponse, mais je voulais ajouter une autre solution de contournement rapide et facile qui pourrait aider les autres visiteurs de cette question.

import seasborn as sns 
sns.kdeplot(mydata1)
sns.kdeplot(mydata2)

Voici quelques exemples utiles ici pour la comparaison entre kde et histogramme.

2voto

Sarah Points 73

Inspiré par la réponse de Solomon, mais pour rester sur la question, qui est liée à l'histogramme, une solution propre est :

sns.distplot(bar)
sns.distplot(foo)
plt.show()

Assurez-vous de tracer l'histogramme le plus grand en premier, sinon vous devrez définir plt.ylim(0,0.45) pour que l'histogramme le plus grand ne soit pas coupé.

0 votes

Un complément utile !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X