2017-11-10 2 views
1

Ich habe eine Spalte von Werten in R, die Messungen von einem 8x12 Raster darstellt:Wie erstelle ich einen 8x12 Heatplot aus einer einzelnen Spalte von Werten?

Hier sind die ersten vier Reihen von Messungen. A1-H1 steht für Zeile 1 im Raster, A2-H2 für Zeile 2 usw. Ich habe insgesamt 12 Zeilen. Wie konvertiere ich diese Daten in eine Matrix von 8x12 (8X4 in diesem Dummy-Beispiel), so dass ich eine Heatmap erstellen kann, die die relativen Gewichtungswerte in einer Weise darstellt, die die ursprüngliche Form des Gitters repliziert, die verloren gegangen ist, wenn die Daten sind als eine einzelne Spalte importiert?

Vielen Dank im Voraus.

Cell Weight 
A1 2 
B1 2 
C1 2 
D1 2 
E1 2 
F1 2 
G1 2 
H1 2 
A2 2 
B2 0.1 
C2 2 
D2 4 
E2 2 
F2 0.1 
G2 2 
H2 2 
A3 2 
B3 2 
C3 2 
D3 2 
E3 2 
F3 4 
G3 2 
H3 2 
A4 2 
B4 2 
C4 6 
D4 2 
E4 2 
F4 2 
G4 2 
H4 2 

Antwort

1

Ich glaube nicht, dass Sie für die Matrix benötigen, gerade Zeilen/Spalten-Informationen von Ihnen Tabelle extrahieren und für geom_tile verwenden:

df$Row <- gsub("[A-Z]", "", df$Cell) 
df$Col <- gsub("[0-9]", "", df$Cell) 
library(ggplot2) 
ggplot(df, aes(Col, Row, fill = Weight)) + 
    geom_tile() 

enter image description here

1

Verwenden Bibliotheken tidyr und dplyr:

df <- read.table(header=TRUE, as.is=TRUE, text='Cell Weight 
A1 2 
B1 2 
C1 2 
D1 2 
E1 2 
F1 2 
G1 2 
H1 2 
A2 2 
B2 0.1 
C2 2 
D2 4 
E2 2 
F2 0.1 
G2 2 
H2 2 
A3 2 
B3 2 
C3 2 
D3 2 
E3 2 
F3 4 
G3 2 
H3 2 
A4 2 
B4 2 
C4 6 
D4 2 
E4 2 
F4 2 
G4 2 
H4 2') 
m <- df %>% separate(Cell, into=c('column','rows'), sep=1) %>% spread(column, Weight) 
rownames(m) <- m$rows 
m$rows <- NULL 
heatmap(as.matrix(m)) 
Verwandte Themen