#r #pivot #stacked-chart
#r #сводный #график с накоплением
Вопрос:
У меня есть такая таблица: dput
данных
dput(data)
structure(list(status = c("Recovered", "Dead", "On-Treatment"
), northern_countries = c(24130778L, 955048L, 15634207L), Southern_countries = c(9157967L,
308243L, 726474L)), class = "data.frame", row.names = c(NA, -3L
))
status northern_countries Southern_countries
1 Recovered 24130778 9157967
2 Dead 955048 308243
3 On-Treatment 15634207 726474
Я хотел бы создать столбчатый график, который показывает процент погибших, восстановленных и обработанных, 2 столбика которых являются northern_countries и southern_countries.
Я искал вокруг, но не мог найти ответ: (Кроме того, я только начал с R, поэтому, пожалуйста, если бы вы могли разъяснить детали, я был бы очень признателен.
Большое спасибо xoxo
Комментарии:
1. Хотя вы не включили, ясно, что вам нужно pivot_longer ваши данные (последние 2 столбца) перед созданием диаграммы
2.
data %>% pivot_longer(cols = c(northern_countries, Southern_countries), names_to= "countries", values_to = "value") %>% ggplot(aes(x=status, y=value)) geom_col(aes(fill= countries), position = "dodge")
попробуйте это3. Помните, что в R данные, которые будут нанесены на одну ось, должны быть только в одном столбце. Это не похоже на MS Excel, где данные по двум столбцам могут быть нанесены на одну ось.
Ответ №1:
Использование ggplot2:
Скажем df
, это имя вашего фрейма данных, сначала вам нужно преобразовать его в длинный формат с pivot_longer()
помощью из tidyr
пакета:
df <- tidyr::pivot_longer(df, cols=-1)
Obs: -1
не будет преобразовывать первую строку в long. Тогда это должно выглядеть примерно так (извините за плохое качество):
Итак, мы хотим name
, чтобы столбец располагался по оси x (по одному столбцу для каждого значения в нем), value
в y, и каждый столбик должен быть разделен по цветам на status
, поэтому мы передаем его в fill
:
library(ggplot2)
ggplot(df, aes(x=name, y=value, fill=status) geom_col()