#堆积面积图
用作构建堆积面积图的输入的数据框需要 3 列:
x:用于X轴的数字变量,通常是 一时间。
y:用于 Y 轴的数字变量。
group:分组。
图表是使用该函数构建的:geom_area()
#导入函数包
library(ggplot2)
library(dplyr)
# 创建一个数据集
time <- as.numeric(rep(seq(1,7),each=7)) # x Axis
time
value <- runif(49, 10, 100) # y Axis
value
group <- rep(LETTERS[1:7],times=7) # group, one shape per group
group
data <- data.frame(time, value, group)
head(data)
#堆积面积图
ggplot(data, aes(x=time, y=value, fill=group)) +
geom_area()
#控制排序
#把分组那一列因子化,并给定排列顺序
data$group <- factor(data$group , levels=c("B", "A", "D", "E", "G", "F", "C") )
#重新画图
ggplot(data, aes(x=time, y=value, fill=group)) +
geom_area()
#修改风格
library(viridis)
library(hrbrthemes)
ggplot(data, aes(x=time, y=value, fill=group)) +
geom_area(alpha=0.6 , size=.5, colour="white") +
scale_fill_viridis(discrete = T) +
theme_ipsum() +
ggtitle("堆积面积图")
#比例堆积面积图
在比例堆积面积图中,每年的总和始终为等于100,每个组的值表示为百分比。
#计算比例
library(dplyr)
data <- data %>%
group_by(time, group) %>%
summarise(n = sum(value)) %>%
mutate(percentage = n / sum(n))
data
#绘图
ggplot(data, aes(x=time, y=percentage, fill=group)) +
geom_area(alpha=0.6 , size=1, colour="black")