построение только самых распространенных уровней переменной в geom_bar - PullRequest
0 голосов
/ 02 марта 2020

В моем наборе данных есть колонка "химиотерапия", которая имеет более 800 различных уровней. Я хочу описать наиболее распространенные, скажем, 10 типов химиотерапевтических препаратов, которые проводились каждый год.

Я не знаю, как заставить geom_bar отображать только уровни выбранных частот.

Это может быть представлено в наборе данных diamonds, где я хотел бы отобразить только 3 наиболее распространенных уровня cut.

library("ggplot2")
library("dplyr")
library("forcats")

diamonds %>%
  ggplot(aes(x = fct_infreq(factor(cut)))) +
  geom_bar(aes(y = ((..count..)/sum(..count..))*100 ))

На графике показаны частоты каждого уровень, но сказать, я хочу, чтобы отображать только топ-3?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Модификация ответа cardinal40 для добавления информации о цвете.

library("ggplot2")
library("dplyr")
library("forcats")

diamonds %>% 
  group_by(cut, color) %>% 
  count(sort = TRUE) %>% 
  slice(1:3) %>%
  ungroup() %>% 
  mutate(pct = n / sum(n)) %>% 
  ggplot(aes(x = cut, y = pct, fill = color)) +
  geom_col()

0 голосов
/ 02 марта 2020

Вот один из вариантов: суммирование и фильтрация фрейма данных перед выполнением вызова ggplot и использованием geom_col:

diamonds %>% 
  group_by(cut) %>% 
  count(sort = TRUE) %>% 
  ungroup() %>% 
  slice(1:3) %>% 
  mutate(pct = n / sum(n)) %>% 
  ggplot(aes(x = cut, y = pct)) +
  geom_col()
...