ggplot2 - 如何将比例标签添加到堆叠比例条形图?
ggplot2 - How do I add proportion labels to stacked proportion barplot?
我有一个这样创建的分组堆叠比例条形图:
df <- data.frame(version = c("Version #1", "Version #2", "Version #1", "Version #2", "Version #1", "Version #2"),
result = c("good", "good", "ok", "ok", "bad", "bad"),
amount = c(1608, 616, 2516, 979, 938, 266))
ggplot(df, aes(x=version,y=amount, fill=result, group = result)) +
geom_bar(stat = "identity", position="fill")
我的问题是,如何向图中添加比例标签。像这样:
在 ggstatsplot
package-
的帮助下,这很简单
# data
df <- data.frame(version = c("Version #1", "Version #2", "Version #1", "Version #2", "Version #1", "Version #2"),
result = c("good", "good", "ok", "ok", "bad", "bad"),
amount = c(1608, 616, 2516, 979, 938, 266))
# plot
ggstatsplot::ggbarstats(
data = df,
main = result,
condition = version,
counts = amount
) +
ggplot2::ylab("amount")
由 reprex package (v0.3.0)
于 2019-05-21 创建
如果不想统计结果,设置results.subtitle = FALSE
即可。
有管道和通常情况:
library(tidyverse)
df %>%
group_by(version) %>%
mutate(label = gsub('^[0](\.\d{1,2}).*', '\1', amount / sum(amount))) %>%
ungroup() %>%
ggplot(aes(x = version, y = amount, fill = result, label = label, vjust = 2)) +
geom_col(position = "fill", alpha = .5) +
geom_text(position = 'fill') +
scale_fill_brewer(palette = 'Set1') +
ggthemes::theme_tufte() +
theme(axis.title.x = element_blank(), axis.ticks = element_blank(),
legend.title = element_blank())
我有一个这样创建的分组堆叠比例条形图:
df <- data.frame(version = c("Version #1", "Version #2", "Version #1", "Version #2", "Version #1", "Version #2"),
result = c("good", "good", "ok", "ok", "bad", "bad"),
amount = c(1608, 616, 2516, 979, 938, 266))
ggplot(df, aes(x=version,y=amount, fill=result, group = result)) +
geom_bar(stat = "identity", position="fill")
我的问题是,如何向图中添加比例标签。像这样:
在 ggstatsplot
package-
# data
df <- data.frame(version = c("Version #1", "Version #2", "Version #1", "Version #2", "Version #1", "Version #2"),
result = c("good", "good", "ok", "ok", "bad", "bad"),
amount = c(1608, 616, 2516, 979, 938, 266))
# plot
ggstatsplot::ggbarstats(
data = df,
main = result,
condition = version,
counts = amount
) +
ggplot2::ylab("amount")
由 reprex package (v0.3.0)
于 2019-05-21 创建如果不想统计结果,设置results.subtitle = FALSE
即可。
有管道和通常情况:
library(tidyverse)
df %>%
group_by(version) %>%
mutate(label = gsub('^[0](\.\d{1,2}).*', '\1', amount / sum(amount))) %>%
ungroup() %>%
ggplot(aes(x = version, y = amount, fill = result, label = label, vjust = 2)) +
geom_col(position = "fill", alpha = .5) +
geom_text(position = 'fill') +
scale_fill_brewer(palette = 'Set1') +
ggthemes::theme_tufte() +
theme(axis.title.x = element_blank(), axis.ticks = element_blank(),
legend.title = element_blank())