Использовать абсолютное значение для текста метки на гистограмме пропорций ggplot - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь показать абсолютные значения для точек данных на гистограмме пропорций, используя ggplot2.

Вот код:

mtcars_gear_by_make <- mtcars %>%
  tibble::rownames_to_column(var = "car") %>%
  tidyr::separate(car, c("make", "model"), sep = "\\s", extra = "merge") %>%
  dplyr::filter(make == "Merc" | make == "Toyota") %>%
  dplyr::group_by(make, gear) %>%
  dplyr::summarize(n_model = n())

И это тибл кода создает:

# Groups:   make [2]
  make    gear n_model
  <chr>  <dbl>   <int>
1 Merc       3       3
2 Merc       4       4
3 Toyota     3       1
4 Toyota     4       1

Я использовал этот код для создания гистограммы пропорций:

ggplot(mtcars_gear_by_make,
       aes(x = make, y = n_model, fill = gear)) +
  geom_col(position = "fill") 

введите описание изображения здесь

Есть ли способ добавить метки к гистограмме, чтобы показать Merc имеет 3 модели с 3-й передачей и 4 модели с 4-й передачей, а Toyota имеет 1 модель с 3-й и 1-й передачей модель с передачей 4?

Спасибо!

1 Ответ

1 голос
/ 04 августа 2020

Попробуйте это, вам нужно создать позицию p, потому что вы показываете стиль пропорций по оси Y, а затем используйте это в geom_text() (я изменил код для вычисления этого):

library(tidyverse)
mtcars_gear_by_make <- mtcars %>%
  tibble::rownames_to_column(var = "car") %>%
  tidyr::separate(car, c("make", "model"), sep = "\\s", extra = "merge") %>%
  dplyr::filter(make == "Merc" | make == "Toyota") %>%
  dplyr::group_by(make, gear) %>%
  dplyr::summarize(n_model = n()) %>%
  dplyr::mutate(p=n_model/sum(n_model))

ggplot(mtcars_gear_by_make,
       aes(x = make, y = n_model, fill = gear,label=n_model)) +
  geom_col(position = "fill")+
  geom_text(aes(y=p),position = position_stack(vjust = .5),color='white',fontface='bold')

введите описание изображения здесь

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