2016-06-11 4 views
1

연속 x 축을 가진 ggplot을 사용하여 산점도를 만들려고하지만 두 점 사이에 큰 시간 차이가 있습니다. 시간 점은 20, 40, 60, 90, 120, 500, 520입니다. 첫 번째 5 개의 값을 스케일링하기를 원하지만 120에서 500 사이의 축에서 휴식을 원하기 때문에 연속이어야합니다. 더 일반적으로 축 손상에 대한 문제 (this SO question)가 있지만 내 질문은 x 축은 y 축이 아닙니다.R ggplot2 x 축 나누기

예제 데이터; (? - 나는 그것을 사용한 적이)

EG.df <- data.frame(AGE = c(20, 20, 40, 40, 60, 60, 90, 90, 120, 120, 500, 500, 520, 520), 
        S1 = c(28, 30, 21, 15, 18, 19, 18, 21, 16, 17, 21, 21, 19, 13)) 

ggplot(EG.df, aes(x=AGE, y=S1)) + 
    geom_point(size=10) 

나는 그것이 plotrix 패키지와 함께 할 수있을 것 같아요,하지만 난 ggplot를 사용하는 것을 선호합니다. 어떤 제안?

답변

1

여기는 단지 ggplot2을 사용하여 매우 빠르게 찌를 수 있습니다. 나는 조작을 위해서 dplyr만을 사용하기 때문에 실제로는 필요하지 않습니다.

우리는 먼저 음모를 꾸미려고하는 부분으로 데이터를 분해합니다. 이것은 아마도 데이터를 사용하여 자동으로 수행 될 수 있지만 여기에서는 수동으로 자르기를 설정합니다. 핵심은 두 그룹 (분할 전/후에)을 만드는 것입니다.

자를 갭에 데이터 포인트가 있기 때문에 필자는 그 패싯을 표시하지 않기 위해 필터를 사용했습니다. 너무 깨끗하지 않습니다.

EG.df <- EG.df %>% 
    mutate(cut = cut(AGE, breaks = c(0,120,500,600))) %>% 
    filter(cut != "(120,500]") 

이제 우리는 플롯을 사용하여 패싯을 사용하여 간격을 만듭니다. 즉, 잘라낸 라벨이있는 패싯이 있습니다. 열쇠는 scales="free_x"을 사용하여 x 축을 자동 적응시킵니다.

example

ggplot(EG.df, aes(x=AGE, y=S1)) + 
+  geom_point(size=10) + facet_grid(.~cut, scales="free_x") 

나는대로 점의 크기를 유지했다. 테마를 추가하여 스트립을 제거 할 수 있습니다.

theme(
    strip.text.x = element_blank(), 
    strip.background = element_blank()) 

두 축 레이블이 서로 잘린 것을 알 수 있습니다. 리더를 축에 고정시키는 연습 문제로 남겨 두겠습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 저에게 도움이됩니다. – EcologyTom