2014-10-01 14 views
7

Quando si utilizzano i grafici di Seaborn facetGrid. È possibile impostare l'etichetta della variabile di riga a sinistra (ad es. Come prima riga dell'etichetta delle assi secondarie a due righe)?Python seaborn facetGrid: è possibile impostare la posizione dell'etichetta della categoria riga a sinistra

Il percorso predefinito è in alto come parte del titolo della sottotrama. sfortunatamente il testo combinato a volte diventa troppo lungo per adattarsi legittimamente a quello spazio affollato. Quindi ho provato a usare margin_titles = opzione True quando istanziato l'oggetto facetGrid. Ma in questo caso, l'etichetta della variabile di riga si trova a destra della legenda, che può essere stranamente troppo lontana dal grafico.

Così i possibili semplici modi per migliorare l'estetica in miei due centesimi vale la pena di pensiero:

  1. Spostare il titolo a margine all'interno della leggenda quando margin_titles = True e legend_out=True
  2. Consenti l'etichetta variabile di riga da visualizzare a sinistra prima dell'etichetta dell'asse y.
  3. Altre idee?

Spiacente, non ho accumulato abbastanza punti per poter aggiungere un esempio di grafico.

risposta

2

Sicuro! L'enumerazione degli assi sembra funzionare bene.

import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style='ticks', color_codes=True) 

tips = sns.load_dataset('tips') 

g = sns.FacetGrid(tips, col='time', row='sex') 
g = g.map(plt.scatter, 'total_bill', 'tip', edgecolor='w') 

for i, axes_row in enumerate(g.axes): 
    for j, axes_col in enumerate(axes_row): 
     row, col = axes_col.get_title().split('|') 

     if i == 0: 
      axes_col.set_title(col.strip()) 
     else: 
      axes_col.set_title('') 

     if j == 0: 
      ylabel = axes_col.get_ylabel() 
      axes_col.set_ylabel(row.strip() + ' | ' + ylabel) 

plt.show() 

enter image description here

Problemi correlati