Fle*_*lec -1 stack r ggplot2 geom-text
我正在尝试为每组绘制一个基本的条形图。
由于值非常大,我想显示每个条形(即组)的条形内每个组的百分比。
我设法显示了总数的百分比,但这不是我所期望的:在每个条形中,我希望 % 的总和等于 100%。
有没有一种简单的方法可以在不更改数据框的情况下做到这一点?
(DF <- data.frame( year = rep(2015:2017, each = 4),
Grp = c("Grp1", "Grp2", "Grp3", "Grp4"),
Value = trunc(rnorm(12, 2000000, 100000))) )
ggplot(DF) +
geom_bar(aes(x = year, y = Value, fill = Grp),
stat = "identity",
position = position_stack()) +
geom_text(aes(x = year, y = Value, group = Grp,
label = percent(Value/sum(Value))) ,
position = position_stack(vjust = .5))
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以为年份的百分位创建一个新变量:
library(dplyr)
library(ggplot2)
library(scales)
DF <- DF %>% group_by(year) %>% mutate(ValuePer=(Value/sum(Value))) %>% ungroup()
ggplot(DF, aes(year, ValuePer, fill = Grp)) +
geom_bar(stat = "identity", position = "fill") +
geom_text(aes(label = percent(ValuePer)),
position = position_fill())+
scale_y_continuous(labels = percent_format())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5017 次 |
| 最近记录: |