2015-07-29 13 views
6

dire che ho un heatmap che assomiglia a questo (assi sono tagliate fuori): enter image description herecambiare determinate piazze in un heatmap Seaborn

voglio essere in grado di alterare alcune piazze per indicare la significatività statistica. So che potrei mascherare i quadrati che non sono statisticamente significativi, ma voglio comunque conservare quell'informazione (e non impostare i valori a zero). Le opzioni per fare ciò includono 1) rendere il testo su alcuni quadrati in grassetto, 2) aggiungendo una funzionalità simile a quella del tratteggio in modo che alcuni quadrati abbiano puntini, o 3) aggiungendo un simbolo a determinati quadrati.

Qualche idea su questo? Grazie!

risposta

4

Si potrebbe tracciare due volte, l'applicazione di una maschera per le cellule non si vuole sottolineare la seconda volta:

import numpy as np 
import seaborn as sns 
x = np.random.randn(10, 10) 
sns.heatmap(x, annot=True) 
sns.heatmap(x, mask=x < 1, cbar=False, 
      annot=True, annot_kws={"weight": "bold"}) 
+0

Grazie! Questo ha funzionato. Non avevo pensato di farlo in questo modo. – drg

7

Un approccio consiste nell'accedere direttamente agli oggetti Text e modificarne il peso/lo stile. Il codice qui sotto vi porterà alcuni dati di esempio e cercare di fare ogni ingresso pari a 118 spiccano:

flights = sns.load_dataset("flights") 
flights = flights.pivot("month", "year", "passengers") 
ax = sns.heatmap(flights, annot=True, fmt="d") 

for text in ax.texts: 
    text.set_size(14) 
    if text.get_text() == '118': 
     text.set_size(18) 
     text.set_weight('bold') 
     text.set_style('italic') 

enter image description here

Io non sono un matplotlib/esperto Seaborn, ma sembra a me che richiedono un la singola cella nella heatmap da tratteggiare richiederebbe un po 'di lavoro. In breve, la heatmap è una Collection di matplotlibPatch es, e il tratteggio di una raccolta può essere impostato solo sulla raccolta nel suo insieme. Per impostare il tratteggio di una singola cella, è necessario che siano patch distinte e le cose si complicano. Forse (si spera) qualcuno più esperto di quanto io possa venire e dire che questo è sbagliato, e che è abbastanza facile - ma se dovessi indovinare, direi che cambiare lo stile del testo sarà più facile che impostare un tratteggio.

+0

Grazie! Questo ha funzionato. – drg

+0

Questo è utile, ma cosa succede se volevo solo incoraggiare il testo nel riquadro in basso per colonna? –

Problemi correlati