提问者:小点点

如何使用ggplot2创建三个变量的堆叠条形图(不是类别!)?


我有一个包含冠状病毒每日演变数据的数据框架,有4列:日期、活动病例、死亡和恢复。由于这3个最后值的总和等于病例总数,我想要一个条形图,其中每天都有一个相应的条形图,分为3部分:活动病例、死亡和恢复。如何使用ggplot实现这一点?先谢谢你


共1个答案

匿名用户

例如,一种可能的方法是使用pivot\u longer函数将数据帧重塑为更长的格式,以适应ggplot2的使用。

作为一个假数据集的示例:

library(lubridate)
df <- data.frame(date = seq(ymd("2020-01-01"),ymd("2020-01-10"),by = "day"),
                 active = sample(10:100,10),
                 death = sample(10:100,10),
                 recov = sample(10:100,10))

library(dplyr)
library(tidyr)
library(ggplot2)

df %>% pivot_longer(-date, names_to = "case", values_to = "val") %>%
  mutate(case = factor(case, levels = c("active","recov","death"))) %>%
  ggplot(aes(x = date, y = val, fill = case))+
  geom_col(position = position_stack(reverse = TRUE))

它回答了你的问题吗?

如果没有,请按照以下指南提供数据集的可复制示例:如何制作一个伟大的R可复制示例,以及您迄今为止尝试过的代码。

相关问题