2015-03-25 11 views
8

z poniższych kodów:Jak dodać separator poziomy w R za heatmap.2

library(gplots) 
heatmap.2(as.matrix(mtcars),density.info="none",trace="none",Colv=FALSE,Rowv=FALSE,dendrogram="none",margin=c(10,10)) 

mogę stworzyć mapę cieplną. Ale to, co chcę zrobić, to dodać separatorów poziomych z podanych bloków:

enter image description here

powiedzmy mam 3 bloki zdefiniowane jako list:

block1 <- c("Mazda RX4","Mazda RX4 Wag","Datsun 710","Hornet 4 Drive","Hornet Sportabout","Valiant","Duster 360","Merc 240D") 
block2 <- c("Merc 230","Merc 280","Merc 280C","Merc 450SE","Merc 450SL","Merc 450SLC","Cadillac Fleetwood", "Lincoln Continental","Chrysler Imperial" ,"Fiat 128","Honda Civic","Toyota Corolla","Toyota Corona","Dodge Challenger","AMC Javelin") 
block3 <- c("Camaro Z28","Pontiac Firebird","Fiat X1-9","Porsche 914-2","Lotus Europa","Ford Pantera L","Ferrari Dino","Maserati Bora","Volvo 142E") 

Odpowiedz

14

Można użyć parametru rowsep w heatmap.2 (podobnie, jeśli chcesz dodać pionowe linie, możesz użyć parametru colsep).

Tutaj chcesz umieścić oddzielenie po 8 wartości, a następnie po 23, więc można zrobić:

heatmap.2(as.matrix(mtcars), 
      density.info="none", 
      trace="none", 
      Colv=FALSE, 
      Rowv=FALSE, 
      dendrogram="none", 
      margin=c(10,10), 
      # now the separations: 
      rowsep=c(8, 23)) 

enter image description here

UWAGA: aby pobrać miejsca poziomymi liniami w oparciu o wektory block, można wykonać

which(row.names(mtcars)==block1[length(block1)]) # 8 
which(row.names(mtcars)==block2[length(block2)]) # 23 
+0

, jeśli osoba niszcząca nie ma nic przeciwko tłumaczeniu się – Cath

Powiązane problemy