ggplot2。如何制作 geom_bar 堆积图 y 范围 0-100%?
ggplot2. How to make geom_bar stacked chart y-range 0-100%?
当使用 geom_bar 和 stat = "identity" 时,y 轴最大值是所有值的总和。在此示例中,我希望 y 轴最大值为 100 而不是 300,并且堆叠条形图显示每个重复条形图的比例。有谁知道我该怎么做?
dat = data.frame(sample = c(rep(1, 12),
rep(2, 9),
rep(3, 6)),
category = c(rep(c("A", "B", "C"), each = 4),
rep(c("A", "B", "C"), each = 3),
rep(c("A", "B", "C"), each = 2)),
replicate = c(rep(c("a", "b", "c", "d"), 3),
rep(c("a", "b", "c"), 3),
rep(c("a", "b"), 3)),
value = c(rep(25, 12),
rep(c(25, 25, 50), 3),
rep(50, 6))
)
ggplot(dat,
aes(x = sample, y = value)) +
geom_bar(aes(fill = replicate),
stat = "identity")
一种方法是在绘图之前预先计算值。
library(dplyr)
library(ggplot2)
dat %>%
group_by(sample) %>%
mutate(value = value/sum(value) * 100) %>%
ggplot() + aes(x = sample, y = value, fill = replicate) +
geom_col() +
ylab('value %')
当使用 geom_bar 和 stat = "identity" 时,y 轴最大值是所有值的总和。在此示例中,我希望 y 轴最大值为 100 而不是 300,并且堆叠条形图显示每个重复条形图的比例。有谁知道我该怎么做?
dat = data.frame(sample = c(rep(1, 12),
rep(2, 9),
rep(3, 6)),
category = c(rep(c("A", "B", "C"), each = 4),
rep(c("A", "B", "C"), each = 3),
rep(c("A", "B", "C"), each = 2)),
replicate = c(rep(c("a", "b", "c", "d"), 3),
rep(c("a", "b", "c"), 3),
rep(c("a", "b"), 3)),
value = c(rep(25, 12),
rep(c(25, 25, 50), 3),
rep(50, 6))
)
ggplot(dat,
aes(x = sample, y = value)) +
geom_bar(aes(fill = replicate),
stat = "identity")
一种方法是在绘图之前预先计算值。
library(dplyr)
library(ggplot2)
dat %>%
group_by(sample) %>%
mutate(value = value/sum(value) * 100) %>%
ggplot() + aes(x = sample, y = value, fill = replicate) +
geom_col() +
ylab('value %')