如何使用 ggplot2 创建三个变量(不是类别!)的堆叠条形图?
How to use ggplot2 to create a stacked bar chart of three variables (not categories!)?
我有一个数据框,其中包含冠状病毒每日演变的数据,有 4 列:日期、活跃病例、死亡和康复。
由于这 3 个最后值的总和等于病例总数,我想要一个条形图,其中每天都有一个相应的条分为 3 个部分:活跃病例、死亡和康复。
我如何使用 ggplot 执行此操作?提前谢谢你
一种可能的方法是使用 pivot_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))
它是否回答了您的问题?
如果没有,请按照本指南提供数据集的可重现示例:How to make a great R reproducible example 以及您目前尝试过的代码。
我有一个数据框,其中包含冠状病毒每日演变的数据,有 4 列:日期、活跃病例、死亡和康复。 由于这 3 个最后值的总和等于病例总数,我想要一个条形图,其中每天都有一个相应的条分为 3 个部分:活跃病例、死亡和康复。 我如何使用 ggplot 执行此操作?提前谢谢你
一种可能的方法是使用 pivot_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))
它是否回答了您的问题?
如果没有,请按照本指南提供数据集的可重现示例:How to make a great R reproducible example 以及您目前尝试过的代码。