2016-04-01 27 views
16

Con matplotlib, posso creare un istogramma con due set di dati su un grafico (uno vicino all'altro, non sovrapposto).Come stampare istogrammi multipli nello stesso grafico con Seaborn

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() 

Questo produce la trama seguente.

enter image description here

Tuttavia, quando provo a fare questo con seabron;

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

ottengo il seguente errore:

ValueError: color kwarg must have one color per dataset 

Allora cerco di aggiungere alcuni valori di colore:

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

e ottengo lo stesso errore. Ho visto this post su come sovrapporre i grafici, ma vorrei che questi istogrammi fossero affiancati, non sovrapposti.

E guardando docs non specifica come includere un elenco di liste come primo argomento 'a'.

Come posso ottenere questo stile dell'istogramma utilizzando Seaborn?

risposta

21

Se ho capito bene si consiglia di provare qualcosa di questo:

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]) 

Quale dovrebbe produrre una trama simile a questo:

enter image description here

UPDATE:

Looks come vuoi un 'aspetto marino' piuttosto che una funzionalità di tracciamento del mare. Per questo è solo bisogno di:

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

che produrrà:

enter image description here

+0

Questo appare come una sovrapposizione, ma c'è un modo per ottenere il lato bar a fianco, invece di sovrapposizione? – Malonge

+0

Ho aggiornato la risposta - spero che ciò possa essere d'aiuto. – Primer

+0

Come è possibile creare un istogramma in Seaborn dalle distribuzioni, xey nell'esempio, che sono troppo grandi per essere conservate in memoria? –

Problemi correlati