2011-09-27 3 views
2

위해이 같은 일을 해요 :xlabel 및 ylabel는면

ggplot(IDPlotLn, aes(x=CO3, y=CRf)) + 
    xlab(xlabel) + 
    ylab(ylabel) + 
    opts(
     axis.text.x = theme_text(size=10, face="plain", colour="black",vjust=1), 
     axis.text.y = theme_text(size=10, face="plain", colour="black", hjust=1)) + 
    scale_y_continuous(limits = c(-1.3 , 1.3), expand = c(0,0)) + 
    opts(panel.margin=unit(1, "cm")) + 
    geom_point() + 
    geom_smooth(method="lm",se=F) + 
    facet_wrap(~ ID, nrow=7, ncol=3, scales = "free") + 
    opts(strip.text.x = theme_text(size = 8)) 

내가 내면, 같은 xlabel 및 ylabel의 각각에 대해 Xlabel 및 ylabel을 플롯합니다. 이처럼 모든면에 대해 하나의 xlabel과 ylabel 만 있습니다.

가능합니까?


답장을 보내 주셔서 감사합니다. gridExtra를 몰랐습니다.

하지만이 예제에서는 패싯을 사용하고 있으며 더 아름답게 만들고 싶습니다. 각 패널에 추가 할 동일한 xlabel 및 ylabel입니다. 왜냐하면 모든 패널에서 여러 패널을 선택하기를 원하기 때문에 이미 x와 y 레이블이 있으면 멋질 수 있습니다.

답변

2

x 축과 y 축에 다른 레이블을 사용하려는 경우 패싯면 패싯을 사용해서는 안된다는 정답입니다. 패 시팅의 전체 점은 각 패널 이 동일한 x 축과 y 축의을 공유한다는 것입니다. 따라서 라벨에 다르게 라벨을 지정하는 경우 파셋을 잘못 사용하는 것일 수 있습니다.

대신에 각 패널을 개별적으로 플롯하고 그리드에 배치하는 것이 좋습니다. 이것은 쉽게 gridExtra 패키지의 도움으로 ggplot2으로 수행 할 수 있습니다

dat <- data.frame(x = rep(1:5,3), 
     y = rnorm(15), 
     z = rep(letters[1:3],each = 5)) 

dat <- split(dat,dat$z) 

p1 <- ggplot(dat[[1]],aes(x=x,y=y)) + 
     geom_point() + 
     labs(x = 'xlabel1',y='ylabel1') 

p2 <- ggplot(dat[[2]],aes(x=x,y=y)) + 
     geom_point() + 
     labs(x = 'xlabel2',y='ylabel2') 

p3 <- ggplot(dat[[3]],aes(x=x,y=y)) + 
     geom_point() + 
     labs(x = 'xlabel3',y='ylabel3') 

library(gridExtra) 
grid.arrange(p1,p2,p3)] 

enter image description here

더 많은 예제 ?grid.arrange를 참조하십시오.

+0

joran- 당신의 요점 "패 시팅의 전체 점은 각 패널이 동일한 x 축과 y 축을 공유한다는 것입니다." 그냥 x 축이 아니어야합니다. Y 축은 동일한 x 축을 공유하는 한 독립적으로 보완 될 수 있습니다. 내가 틀렸다면 나를 바로 잡을거야? – 2sb

+0

@ 2sb 요점은 패싯이 적어도 하나의 축을 공유하는 상황을위한 것입니다. OP는 _both_ 축에 각 패 널에 다르게 라벨을 붙이려고했는데, 이는 일종의 패 시팅의 목적을 상쇄합니다. – joran

+0

joran- "적어도 하나의 축을 공유 할 때"더 좋습니다. 감사. – 2sb