2017-01-25 1 views
5

현재 Hadley Wickham의 데이터 과학에 대해 R을 읽습니다.R : ggplot2 포인트 범위 예제

library(tidyverse) 

ggplot(data = diamonds) + 
stat_summary(
    mapping = aes(x = cut, y = depth), 
    fun.ymin = min, 
    fun.ymax = max, 
    fun.y = median 
) 

지금, 적절한 geom_ 기능을 사용하여 동일한 플롯을 만드는 방법 등의 질문이있다 : 즉, 다음의 예제가있다. stat_summary에 대한 기본값 인 geom을 보았는데 pointrange입니다.

그래서 나는 다음과 같은 시도 :

ggplot(data = diamonds) + geom_pointrange(mapping = aes(x = cut, y = depth), stat = "summary") 

하지만 음모에 minmax 포인트를 획득하지 않습니다.

geom_pointrange을 사용하여 정확한 플롯을 얻으려면 어떻게해야합니까? 내가 생각할 수있는

+1

, 나는 똑같은 질문을했다 : 여전히 geom_pointrange를 사용하는 동안 당신은 stat = "summary"이 작업을 수행 할 수 있습니다. StackOverflow가 최상입니다. –

답변

6

geom_pointrange 자동으로 ymin 또는 ymax 값을 계산하지 않습니다. 나는 또한 그 책을 읽고 있어요

ggplot(data = diamonds) + 
    geom_pointrange(mapping = aes(x = cut, y = depth), 
        stat = "summary", 
        fun.ymin = min, 
        fun.ymax = max, 
        fun.y = median) 
+0

그래서 내가 잃어버린 것은 마지막 3 가지 주장입니다. –

3

쉬운 방법은 매우 유사한 플롯을 줄 것이다 geom_line 및 stat_summary

ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) + 
    geom_line() + 
    stat_summary(fun.y = "median", geom = "point", size = 3) 

이를 사용하고 있습니다. enter image description here

geom_pointrange를 실제로 사용하려면 작은 데이터 세트를 먼저 작성해야합니다.

data = diamonds %>% 
    group_by(cut) %>% 
    summarise(min = min(depth), max = max(depth), 
     median = median(depth)) 

ggplot(data, aes(x = cut, y = median, ymin = min, ymax = max)) + 
    geom_linerange() + 
    geom_pointrange() 

정확하게 동일한 플롯을 생성합니다. 희망이 도움이!

+0

고맙습니다. 첫 번째 옵션은 좋아 보이지만 t는'stat_summary'를 사용하지 말아야한다는 내용의 질문입니다. 두 번째 옵션도 훌륭하지만 책의 뒷부분에서 가르쳐주는 기술을 사용합니다. 그래서 다른 방법이 있습니까? –