Существует ли функция R для замены точек выброса в ggplot количеством участников на каждом уровне? - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над GGPLOT (прилагается здесь). Я хочу убрать выпадающие черные точки с количеством участников на каждом уровне. Я понимаю, что outlier.shape = NA удалит выбросы, но как я могу добавить количество участников на тех же уровнях. На данный момент я держу коды очень простыми, так как я добавлю метки и заголовки, как только этот запрос будет решен.

Например, а) верхний блок-график вместо 4-х точек выброса, я хочу добавить цифры "55, 67, 89, 90" б) нижний блок-график вместо 4-х точек выброса, я хочу добавить номера "34, 56, 34, 23"

Мои коды указаны ниже:

ggplot(dist, aes(x=treatment, y=outcome)) + geom_boxplot()+ylim(0,24)+ theme_void()+ coord_flip()

GGPLOT

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Одним из решений является сначала определить выбросы, а затем использовать прозрачность.

Tyr его в наборе данных mpg.

library(ggplot2)
library(dplyr)
data(mpg)

mpg %>%
  group_by(drv) %>%
  mutate(outlier = as.numeric(  # so ggplot doesn't complain about alpha being discrete
    !between(cty, 
            quantile(cty)[2] - 1.5*IQR(cty),
            quantile(cty)[4] + 1.5*IQR(cty)))) %>% 
  ggplot(aes(drv, cty, label=cty)) + 
  geom_boxplot(outlier.shape = NA) +
  geom_text(aes(alpha=outlier), show.legend=FALSE) +
  scale_alpha_continuous(range = c(0, 1))

enter image description here

Здесь метка является переменной cty, но вы можете заменить ее другой, представляющей данные, которые вы после (количество участников).

0 голосов
/ 04 мая 2020

Вы можете добавить текстовое поле с условным значением ifelse(), чтобы добавить фактические значения ваших выбросов geom_text(aes(label=ifelse((y>'some threshold value'),y,""))))

Это устанавливает его в ничто, если оно ниже порога и значения y когда значение y превышает пороговое значение выброса.

Вы также можете использовать функцию paste( ) для добавления текста со значениями.

...