2015-10-02 52 views
9

Come posso sovrapporre due grafici in Seaborn? Ho due colonne nei miei dati che vorrei avere nello stesso grafico. Come posso farlo preservando l'etichettatura per entrambi i grafici.Come posso sovrapporre due grafici in Seaborn?

+0

Non è chiaro che cosa questa domanda sta chiedendo. Che tipo di grafico? Puoi fare molti tipi di grafici con il mare, e l'approccio giusto varierà a seconda di quello che stai facendo. Qual è la relazione tra le variabili? Cosa significa "preservare l'etichettatura"? Come desideri distinguere le due variabili? In ogni caso, nella misura in cui ci sarà una risposta generale, sarà una risposta a Matplotlib, non a Seaborn. – mwaskom

+0

(1) qualsiasi tipo di grafico (2) ovviamente (3) che le etichette siano ancora lì. le etichette degli assi di entrambi i grafici ad esempio (4) il colore ad esempio –

risposta

16

funzione Seaborn che operano su un singolo assi possono prendere uno come argomento.

Per esempio, la documentazione a seaborn.kdeplot includono:

ax : matplotlib axis, optional 
    Axis to plot on, otherwise uses current axis 

Quindi, se avete fatto:

df = function_to_load_my_data() 
fig, ax = plt.subplots() 

Si potrebbe poi fare:

seaborn.kdeplot(df['col1'], ax=ax) 
seaborn.kdeplot(df['col2'], ax=ax) 
+1

Grazie, l'unico svantaggio è che l'etichettatura non è per entrambi i grafici. –

+2

@ DavoudTaghawi-Nejad beh hai l'oggetto 'ax', quindi puoi fare qualsiasi cosa a quel punto, davvero. –

+0

Come aggiungerei una legenda in questo caso? – famargar

-2

L'esempio più semplice sarebbe:

import seaborn as sns 

import matplotlib.pyplot as plt 

data1 = [1, 2, 3, 4, 5] 

data2 = [1, 1.1, 1.3, 4, 4.1] 

def plotter(): 
    plt.plot(data1) 
    plt.plot(data2) 
    plt.show() 


plotter() 
+1

Questo esempio utilizza nativo 'matplotlib', non il seaborn, giusto? – VMAtm

8

Una soluzione è quella di introdurre un asse segreta:

fig, ax = plt.subplots() 
    sb.regplot(x='round', y='money', data=firm, ax=ax) 
    ax2 = ax.twinx() 
    sb.regplot(x='round', y='dead', data=firm, ax=ax2, color='r') 
    sb.plt.show() 

enter image description here

+1

probabilmente sarebbe utile avere una legenda in questo caso. per farlo puoi usare il parametro label nelle funzioni seaborn ma a quanto pare devi chiamare plt.legend() dopo ogni funzione di tracciamento – awakenting

1

i dati sono circa privato vs dati collage pubblici, ma funziona, come possiamo vedere carichiamo tutti i parametri globali a un oggetto Seaborn e poi tracciamo le tabelle allo stesso riquadro.

import seaborn as sns 

import matplotlib.pyplot as plt 

import pandas as pd 


df = pd.read_csv('College_Data',index_col=0) 

g = sns.FacetGrid(df,hue='Private',palette='coolwarm',size=6,aspect=2) 

g.map(plt.hist,'Outstate',bins=20,alpha=0.7) 

See Chart

Problemi correlati