Я хотел бы включить столбец для «всего» в гистограмму с накоплением, отображающую категориальную переменную. Упрощенный пример моей проблемы выглядит так:
У меня 3 города (Лондон, Берлин, Вена) и 2 типа туристов. Я могу построить график доли туристов, которые приезжают более одного раза (повторно), по сравнению с теми, кто приезжает только один раз (один раз) для каждого города, используя приведенный ниже код.
Теперь я хотел бы добавить полосу для общего повтора/один раз в целом (не по городам) на той же диаграмме. К сожалению, я не смог найти подсказку, как это сделать.
Я был бы очень признателен за подсказку, как добавить этот «общий бар», так как он мне нужен довольно часто. Заранее большое спасибо!
df <- data.frame("City"=c("Vienna","Vienna","London","London","Berlin", "London", "Berlin","Berlin","Vienna","Vienna","Vienna", "Vienna", "Berlin","Vienna","Vienna","Vienna"),"Type"=c("repeat","once","repeat","once","repeat","once", "repeat","once","repeat","once","repeat","repeat","repeat","repeat","repeat","once"))
df %>%
ggplot(aes(x=City, fill=Type), reorder(Type)) +
geom_bar(position = "fill", alpha=0.75) +
scale_fill_brewer(palette = "Paired") +
coord_flip()
´´´
Вы можете добиться желаемого результата, добавив второй geom_bar
, где вы сопоставляете константу (например, строку Total
) с x
и устанавливаете порядок категорий через scale_x_discrete
:
library(ggplot2)
ggplot(df, aes(x=City, fill=Type), reorder(Type)) +
geom_bar(position = "fill", alpha=0.75) +
geom_bar(aes(x = "Total"), position = "fill", alpha=0.75) +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(limits = c("Total", unique(df$City))) +
coord_flip()
Большое спасибо за ваш быстрый ответ! Это прекрасно работает! (Он также создает полосу для NA, даже если я сначала отбрасываю их с помощью df %>% drop_na(City) %>% , но я могу обойти это, создав новый фрейм данных только для диаграммы без NA ´с.).