R

Kuidas joonistada segadusmaatriksit, kasutades R -i soojuskaarte?

How Plot Confusion Matrix Using Heatmaps R



Lahendus:

Kasutades saate saavutada ilusa tulemuseggplot2, kuid selleks on vaja data.frame, millel on 3 veergu x, y ja joonistatav väärtus.

Kasutadeskogudatidyr tööriista abil on teie andmeid väga lihtne vormindada:

library ('dplyr') library ('tidyr') # Teie näite laadimine. Ridade nimed peaksid saama oma veeru (siin 'y'). hm<- readr::read_delim('y a b c d e f g h i j a 5 4 0 0 0 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 0 c 0 0 4 0 0 0 0 0 0 0 d 0 0 0 0 0 0 0 0 0 0 e 2 0 0 0 2 0 0 0 0 0 f 1 0 0 0 0 2 0 0 0 0 g 0 0 0 0 0 0 0 0 0 0 h 0 0 0 0 0 0 0 0 0 0 i 0 0 0 0 0 0 0 0 0 0 j 0 0 0 0 0 0 0 0 0 0', delim=' ') # Gathering columns a to j hm % gather(x, value, a:j) # hm now looks like: # # A tibble: 100 x 3 # y x value # # 1 a a 5 # 2 b a 0 # 3 c a 0 # 4 d a 0 # 5 e a 2 # # ... with 95 more rows  

Täiuslik! Hakkame joonistama. ggplot2 -ga soojuskaardi peamine geom ongeom_tile, millele pakume esteetikatx,y jatäitma.



raamatukogu ('ggplot2') ggplot (hm, aes (x = x, y = y, fill = value)) + geom_tile ()

Esimene katse soojuskaardile



OK, pole hullu, aga saame palju paremini teha. Kõigepealt tahame ilmselt y -telje ümber pöörata. Trikk on pakkuda x ja y teguritena koos soovitud tasemetega.

hm % muteeruma (x = tegur (x), # tähestikuline järjestus vaikimisi y = tegur (y, tasemed = pööre (kordumatu (y))))) # sunnib tähestikulises järjekorras

Siis mulle meeldib mustvalge teematheme_bw (), mis vabaneb hallist taustast. Mulle meeldib kasutada ka palettiRColorBrewer (koossuund = 1 tumedamate värvide saamiseks kõrgemate väärtuste jaoks).

Kuna plaanite sama asjax jay -telg, soovite tõenäoliselt võrdseid teljekaalu:coord_equal () annab teile ruudukujulise graafiku.



ggplot (hm, aes (x = x, y = y, fill = value)) + geom_tile () + theme_bw () + coord_equal () + scale_fill_distiller (palett = 'Rohelised', suund = 1) # Muud kehtivad paletid: punased , Blues, Spectral, RdYlBu (punane-kollane-sinine), ...

Parem soojuskaart

Viimistlus: väärtuste printimine plaatide peale ja legendi eemaldamine, kuna see pole enam kasulik. Ilmselt on see kõik valikuline, kuid annab teile materjali, millest ehitada. Märgegeom_text päribx jay esteetika alates nende edastamisestggplot.

ggplot (hm, aes (x = x, y = y, fill = value)) + geom_tile () + theme_bw () + coord_equal () + scale_fill_distiller (palett = 'Rohelised', suund = 1) + juhendid (fill = F ) + # eemaldamise legend 'fill' laborite jaoks (pealkiri = 'Väärtuste jaotus') + #, kasutades pealkirja asemel geom_text (aes (silt = väärtus), värv = 'must') # printimisväärtust

Lõplik soojuskaart

Sa võiksid ka mööda minnavärv = 'must' kunigeom_tile, et tõmmata (mustad) jooned ümber plaatide. Viimane süžee koosRdYlBu värviskeem (vtRColorBrewer :: display.brewer.all () saadaolevate palettide loendi jaoks).

Esitatakse rohkem võimalusi


Nagu Greg mainis,pilt on ilmselt õige tee:

z = c (5,4,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,4, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 2,0,0,0,2,0,0,0, 0,0, 1,0,0,0,0,2,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0, 0,0) z = maatriks (z, ncol = 10) kolonninimed (z) = c ('a', 'b', 'c', 'd', 'e', ​​'f', 'g', ' h ',' i ',' j ') rownames (z) = c (' a ',' b ',' c ',' d ',' e ',' f ',' g ',' h ', 'i', 'j') ## Kujutise õigeks pööramiseks ## Peame joonise kujutise ümber pöörama (z [, ncol (z): 1], teljed = VÄÄR) ## Lisage y-teljele sildid. Sarnane idee x-telje kohta. telg (2, at = seq (0, 1, pikkus = pikkus (kolonnimed (z))))), sildid = kolonnimed (z))

Võib -olla soovite vaadata kasoojuskaardi funktsioon:

soojuskaart (t (z) [ncol (z): 1,], Rowv = NA, Colv = NA, col = soojusvärvid (256))