2010-11-25 5 views
24

일부 샘플 데이터 :서로 다른 패싯에 대해 서로 다른 눈금을 어떻게 설정합니까?

dfr <- data.frame(
    x = rep.int(1:10, 2), 
    y = runif(20), 
    g = factor(rep(letters[1:2], each = 10)) 
) 

두면 간단한 산점도 :

p + scale_y_continuous(limits = c(0.2, 0.8)) 

(또는 이에 대한 래퍼

p <- ggplot(dfr, aes(x, y)) + 
    geom_point() + 
    facet_wrap(~ g, scales = "free_y") 

I 모든 패널 축 제한을 설정할 수 like ylim)

하지만 어떻게 설정해야합니까? 다른 패싯에 대한 축 제한이 있습니까?

는, 예를 들어,이 인수 목록을 통과하는 것입니다 수행하는 latticey 방법,

p + scale_y_continuous(limits = list(c(0.2, 0.8), c(0, 0.5))) 

은 불행하게도 그 단지 ggplot2의 경우 오류가 발생합니다.

편집 :

여기에 일부 해킹. 비늘 범위를 확장하려면 제한을 지정하는 데이터 세트에 열을 추가 한 다음 geom_blank으로 그립니다.

수정 된 데이터 세트 :

dfr <- data.frame(
    x = rep.int(1:10, 2), 
    y = runif(20), 
    g = factor(rep(letters[1:2], each = 10)), 
    ymin = rep(c(-0.6, 0.3), each = 10), 
    ymax = rep(c(1.8, 0.5), each = 10) 
) 

업데이트 줄거리 :

p + geom_blank(aes(y = ymin)) + geom_blank(aes(y = ymax)) 

지금 비늘이 다른 왼쪽 손 하나가 맞습니다. 불행히도 오른 손잡이는 점에 대한 여유를 만들어야하기 때문에 계약하지 않습니다.

도움이 될 경우 이제는 "scale_y_continuous을 명시 적으로 호출하지 않고도 비늘을 다시 계산하지 않고도 점을 그릴 수 있습니까?"라는 질문을 다시 표현할 수 있습니다.

답변

5

ggplot2에서 아직 가능하지 않다고 생각합니다. 1 월의 discussion은 문제가 검토 중임을 나타냅니다.

+0

감사합니다. 내가 바라는 답변이 아닙니다. –

+0

@Ritchie : 해들리에게 확인해보십시오. 그는 ggplot2의 개발 버전에서 뭔가를 할 수 있습니다. –

0

왼쪽 플롯에서 눈금을 축소하려면 범위 밖에있는 지점을 제거하십시오. 예 : 이 0과 0.5 사이의 값에 대한 권리 플롯은 y 스케일을 줄일 수 :

p <- ggplot(dfr, aes(x, y)) + 
    geom_point(subset=.(g == "a" | (y > 0 & y <.5))) + 
    geom_blank(aes(y = ymin)) + geom_blank(aes(y = ymax)) + 
    facet_wrap(~ g, scales = "free_y") 

question에도 내 대답을 참조하십시오.

관련 문제