2017-02-04 2 views
3

Итак, я знаю, что лучший способ приблизиться к этому - использовать функцию stat_summary(), но это должно решить вопрос, представленный в книге Хэдли R для книги по науке в основном для моих собственных любопытство. Он спрашивает, как преобразовать код для примера, сделанного с использованием stat_summary(), чтобы сделать тот же участок с geom_pointrange(). Пример:Участок min, max, медианный для каждого значения x в geom_pointrange

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

И сюжет должен выглядеть следующим образом:

pointrange plot http://r4ds.had.co.nz/visualize_files/figure-html/unnamed-chunk-35-1.png

Я попытался с кодом, такие как:

ggplot(data = diamonds, mapping = aes(x = cut, y = depth)) + 
    geom_pointrange(mapping = aes(ymin = min(depth), ymax = max(depth))) 

enter image description here

Однако , это отображает min и max для все значения глубины для каждой категории разреза (то есть все ymin и ymax одинаковые). Я также попытался передать вектор mins и maxs, но ymin принимает только одно значение, насколько я могу судить. Это, наверное, что-то простое, но я думаю, что люди в основном используют stat_summary(), так как я нашел очень мало примеров использования geom_pointrange() через Google.

+0

Хороший вопрос. Я думаю, что многие люди почесывают голову над этим. –

+0

Возможный дубликат примера [R: ggplot2 pointrange] (https://stackoverflow.com/questions/41850568/r-ggplot2-pointrange-example) –

ответ

3

Я думаю, что вам нужно сделать резюме за пределами функции участка использовать geom_pointrange:

library(dplyr) 
library(ggplot2) 
summary_diamonds <- diamonds %>% 
    group_by(cut) %>% 
    summarise(lower = min(depth), upper = max(depth), p = median(depth)) 

ggplot(data = summary_diamonds, mapping = aes(x = cut, y = p)) + 
    geom_pointrange(mapping = aes(ymin = lower, ymax = upper)) 

enter image description here

+0

Спасибо, это сработало отлично! Сравнивая два, 'stat_summary' кажется более эффективным. – user3654634

Смежные вопросы