web-dev-qa-db-fra.com

Comment tracer plusieurs histogrammes sur le même tracé avec Seaborn

Avec matplotlib, je peux faire un histogramme avec deux jeux de données sur un tracé (l'un à côté de l'autre, pas en superposition).

import matplotlib.pyplot as plt
import random

x = [random.randrange(100) for i in range(100)]
y = [random.randrange(100) for i in range(100)]
plt.hist([x, y])
plt.show()

Cela donne le graphique suivant.

enter image description here

Cependant, lorsque j'essaie de le faire avec du seabron;

import seaborn as sns
sns.distplot([x, y])

J'obtiens l'erreur suivante:

ValueError: color kwarg must have one color per dataset

Alors j'essaie d'ajouter des valeurs de couleur:

sns.distplot([x, y], color=['r', 'b'])

Et je reçois la même erreur. J'ai vu ce post sur la façon de superposer des graphiques, mais je voudrais que ces histogrammes soient côte à côte, pas superposés.

Et en regardant le docs il ne spécifie pas comment inclure une liste de listes comme premier argument 'a'.

Comment puis-je obtenir ce style d'histogramme en utilisant Seaborn?

20
Malonge

Si je vous comprends bien, vous voudrez peut-être essayer quelque chose comme ceci:

fig, ax = plt.subplots()
for a in [x, y]:
    sns.distplot(a, bins=range(1, 110, 10), ax=ax, kde=False)
ax.set_xlim([0, 100])

Ce qui devrait donner un tracé comme celui-ci:

enter image description here

[~ # ~] mise à jour [~ # ~] :

Il semble que vous souhaitiez un "aspect marin" plutôt qu'une fonctionnalité de tracé marin. Pour cela, il vous suffit de:

import seaborn as sns
plt.hist([x, y], color=['r','b'], alpha=0.5)

Ce qui produira:

enter image description here

31
Primer