2011-08-09 2 views
7

저는 ggplot의 geom_tile을 사용하여 한 요소에 의해면 처리 된 2D 밀도 플롯을 수행합니다. 모든 패싯의 눈금은 모든 데이터의 최소값에서 모든 데이터의 최대 값으로 이동하지만 각 패싯의 geom_tile은 해당 패싯에있는 의 데이터 범위까지만 확장됩니다.ggplot의 geom_tile을 모든면을 채우려면 어떻게해야합니까?

예제 문제를 보여줍니다 코드 :

library(ggplot2) 

data.unlimited <- data.frame(x=rnorm(500), y=rnorm(500)) 
data.limited <- subset(data.frame(x=rnorm(500), y=rnorm(500)), x<1 & y<1 & x>-1 & y>-1) 

mydata <- rbind(data.frame(groupvar="unlimited", data.unlimited), 
       data.frame(groupvar="limited", data.limited)) 

ggplot(mydata) + 
    aes(x=x,y=y) + 
    stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) + 
    facet_wrap(~ groupvar) 

facet

실행 코드, 당신은 두 측면을 볼 수 있습니다. 한 패싯은 "무제한"무작위 정규 분포의 밀도 플롯을 보여줍니다. 두 번째 패싯은 원점에 대해 2x2 정사각형 내에 자른 임의의 법선을 보여줍니다. "제한된"패싯의 geom_tile은 패싯을 채우는 대신이 작은 상자 안에 갇혀있을 것입니다.

last_plot() + 
    scale_x_continuous(limits=c(-5,5)) + 
    scale_y_continuous(limits=c(-5,5)) 

specified limits

지난 산신 지정된 x 및 y 한계와 동일한 데이터를 플롯 우리는 어느면이 경우 가장자리 타일 부분을 연장 참조.

각 패싯의 geom_tile이 패싯의 전체 범위까지 확장되도록하는 방법이 있습니까?

답변

14

난 당신이 scales = "free"expand = c(0,0)의 조합을 찾고 생각 :

ggplot(mydata) + 
    aes(x=x,y=y) + 
    stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) + 
    facet_wrap(~ groupvar,scales = "free") + 
    scale_x_continuous(expand = c(0,0)) + 
    scale_y_continuous(expand = c(0,0)) 

enter image description here

편집

영업의 설명을 감안할 때, 여기에 단순히 패널 설정을 통해 하나 개의 옵션입니다 배경을 수동으로 설정 :

ggplot(mydata) + 
    aes(x=x,y=y) + 
    stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) + 
    facet_wrap(~ groupvar) + 
    scale_fill_gradient(low = "blue", high = "red") + 
    opts(panel.background = theme_rect(fill = "blue"),panel.grid.major = theme_blank(), 
     panel.grid.minor = theme_blank()) 

enter image description here

+0

아니오, 모든면의 배율을 동일하게 설정하십시오. 기본적으로, 제한된 쪽의 2x2 상자 바깥쪽에 단색의 파란색을 지정하여 거기에 밀도가 0임을 나타냅니다. 다시 말해서, 저울이 데이터의 범위로 축소되는 것을 원하지 않습니다. 단지 저울을 변경하지 않고 geom_tile로 전체 영역을 덮고 싶습니다. –

+0

그런 경우에는 패널 배경을 수동으로 설정하는 것이 좋습니다. 내가 예를 들어 업데이 트됩니다 ... – joran

+0

@ 라이언 - 당신도 볼 수 있습니다 [여기] (http://stackoverflow.com/questions/6906661/ggplot2-make-missing-value-in-geom-tile-not- 공백) 다른 옵션에 대한, 비록 당신이 손에 밀도 값을 가지고 있다고 생각 믿습니다. – joran

관련 문제