Как я могу расставить приоритеты по шкале y, которую я получу из geom_histogram? - PullRequest
5 голосов
/ 01 апреля 2020

Я хотел бы нарисовать вертикальную линию на гистограмме, где медиана моих данных после фасетирования. Я хотел бы сделать это с stat_summary, как показано ниже. Проблема с этим подходом состоит в том, что ось у не в правильном масштабе

Я думаю, это потому, что я называю ggplot(aes(x=data, y=data)). Кажется немного странным делать гистограмму, но причина, по которой я это делаю, заключается в том, что для stat_summary требуется ayestheti c. Есть ли способ, которым я мог бы построить медианы с помощью stat_summary, но сохранить шкалу, полученную при вызове geom_histogram? Я мог бы добавить ylim, но проблема с этим подходом заключается в том, что я могу не знать, какой правый верхний предел является априори для новых данных, которые я могу увидеть.

Ниже приведен пример для генерации моего примера.

library(tidyverse)
#> Warning: package 'tibble' was built under R version 3.6.2

d = tribble(
  ~groupvar, ~data,
  'a', rlnorm(10,2, 0.5),
  'b', rlnorm(10,2, 0.5),
  'c', rlnorm(10,5, 0.5)
) %>% unnest(c(data))



d %>% 
  ggplot(aes(x = data, y = data, group = groupvar))+
  geom_histogram(aes(y = ..count..))+
  facet_grid(~groupvar)+
  stat_summary(aes(x=0, xintercept=stat(y)), fun = median, geom = 'vline')
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Создано в 2020-04-01 пакетом Представить (v0.3.0)

1 Ответ

4 голосов
/ 01 апреля 2020

Вы можете удалить y = ..count.. и карту y только в слое stat_summary:

d %>% 
  ggplot(aes(x = data, group = groupvar))+
  geom_histogram() +
  facet_grid(~groupvar) + 
  stat_summary(aes(y = 0, xintercept=stat(x)), fun = median, geom = 'vline')

enter image description here

Я также (a ) удалил x = 0 в слое stat_summary и (b) изменил stat(y) на stat(x) (так как вы строите вертикальную линию, имеет смысл, чтобы она была сводкой значений x).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...