2015-07-29 9 views
6

Say mam mapa cieplna wygląda następująco (osie są przycięte off): enter image description herezmienić pewne kwadraty w Seaborn mapę cieplną

Chcę być w stanie zmienić pewne kwadraty do określenia istotności statystycznej. Wiem, że mogę maskować kwadraty, które nie są istotne statystycznie, ale nadal chcę zachować te informacje (i nie ustawiać wartości na zero). Dostępne opcje to: 1) nadanie tekstu na niektórych polach pogrubioną czcionką, 2) dodanie funkcji podobnej do kreskowania, tak aby niektóre kwadraty miały zapętlenie, lub 3) dodanie symbolu do niektórych kwadratów.

Wszelkie pomysły na ten temat? Dzięki!

Odpowiedz

4

Można wykreślić dwukrotnie, stosując maskę do komórek nie chcesz, aby podkreślić raz drugi:

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

Dzięki! To zadziałało. Nie myślałem o zrobieniu tego w ten sposób. – drg

7

Jednym ze sposobów jest bezpośredni dostęp do obiektów Text i zmiana ich wagi/stylu. Poniższy kod zajmie kilka przykładowych danych i starać się każdy wpis w wysokości 118 wyróżniają się:

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

Nie jestem matplotlib/ekspert Seaborn, ale wydaje mi się, że wymagające pojedyncza komórka w wykreślanej mapie termicznej wymaga trochę pracy. W skrócie, mapa termiczna jest Collection z Patch es, a kreskowanie kolekcji można ustawić tylko w kolekcji jako całości. Aby ustawić kreskowanie pojedynczej komórki, musisz mieć odrębne łaty, a rzeczy stają się nieładne. Być może (miejmy nadzieję) ktoś bardziej kompetentny niż ja mógłbym powiedzieć i powiedzieć, że to źle, i że to całkiem proste - ale gdybym musiał zgadywać, powiedziałbym, że zmiana stylu tekstu będzie łatwiejsza niż ustawienie kreskowania.

+0

Dzięki! To zadziałało. – drg

+0

To jest pomocne, ale co, jeśli chcę tylko ośmielić tekst w dolnym kwadracie na kolumnę? –