2017-03-24 11 views
1

5 개의 위치 (loc_1 ... 5)에 따라 다른 강도 값을 생성하는 네 번의 측정/실험 (M1..M4)을 수행했다고 가정 해 보겠습니다. 나는 여러 종류의 요소 (n = 7)를 관찰했다. 이제 ggplot2의 facet_grid와 geom_raster를 사용하여 결과를 하나의 다이어그램으로 요약하고 싶습니다. 나는 아래 다이어그램으로 끝난다 (이미지 참조).ggplot2에서 facet_grid 및 geom_raster를 사용할 때 행 채우기

이제는 각면의 공간을 채우도록 행을 적용하는 간단한 해결책이 있는지 (즉, 각 패널에서 사용되지 않는 행을 삭제하는) 문제가 있습니다. 당신의 목표는 당신이 tidyr 패키지 등으로부터 complete 기능을 사용할 수 있습니다 posmesure, elements, class의 누락 된 모든 조합에 대한 NA 값 (또는 뭔가 다른)를 도입하는 경우

rm(list=ls()) 
library(ggplot2) 
library(reshape2) 

set.seed(123) 

# let's create a fake dataset 
nb.mesure <- 4 
n.row <- 200 
n.col <- 5 
nb.class <- 7 


d <- matrix(round(runif(n.row * n.col),2), nc=n.col) 
colnames(d) <- sprintf("Loc_%02d", 1:5) 

# These strings will be the row names of each heatmap 
# in the subsequent facet plot 
elements <- sample(replicate(n.row/2, 1:100)) 

# let's create a data.frame d 
d <- data.frame(d, 
       mesure = sort(rep(c("M1","M2","M3", "M4"), n.row/4)), 
       elements= elements, 
       class=sample(nb.class, 
          length(elements), 
          rep=T, 
          prob = seq(0.01, 0.25, length.out=7)) 
          ) 



# Data are melt 
dm <- melt(d, id.var=c("mesure", "elements", "class")) 
colnames(dm) <- c("mesure","elements", "class", "pos", "intensity") 

# Plotting 
p <- ggplot(dm, aes(x = pos, y = elements, fill = intensity)) 
p <- p + geom_raster()           
p <- p + facet_grid(mesure~class , scales = "free", space="free_y") 
p <- p + theme_bw() 
p <- p + theme(text = element_text(size=8)) 
p <- p + theme(text = element_text(family = "mono", face = "bold")) 
p <- p + theme(axis.text.y = element_blank(), 
       axis.ticks.y=element_blank(), 
       axis.text.x = element_text(colour="grey20", 
              size=6,angle=45, 
             vjust = 0.3)) 
print(p) 

Example resul

답변

1

주셔서 감사합니다 그래서 :

enter image description here

경우

당신이 비 NA 값을 갖고 싶어 UPDATE는 facet_grid에서 벗어나 facet_wrap로 전환해야 각면을 채우기 위해 확장합니다. 응답에 대한

p <- p + facet_wrap(mesure~class , scales = "free_y", nrow = 4) 

enter image description here

+0

감사 제론을. 나는 NA를 소개하고 싶지 않다. 이 아이디어는 NA가 아닌 값을 가진 행의 높이가 다르기 때문에 전체 하위 패널을 채울 수 있습니다. 또는 일부 하위 패널을 수직으로 축소하여 비 NA 값이있는 행만 표시되도록하는 방법에 관심이 있습니다. 행이 각 클래스의 같은 요소를 가리 키기 때문에 다소 이상하다는 것을 이해합니다. 내 경우 엔 행의 이름이 숨겨져 있기 때문에, M1 .. M4의 클래스 1 ... 7의 요소에 대한 전체적인 느낌에 관심이 있습니다. – user451460

+0

그런데 매우 도움이 될 수 있다고 생각되는 완전한 기능에 대해 감사드립니다. – user451460

+0

환영합니다. 지금 무슨 뜻인지 알고 있습니다. 대답이 업데이트됩니다. –