【发布时间】:2019-12-19 13:35:20
【问题描述】:
我正在尝试在 R 中绘制堆叠条中每个条的百分比标签,如果您看到第一个条,则百分比总和为 28%,而不是我正在寻找的 100%。第一个柱子应该是 72%、14%、14%,第二个柱子应该是 11%、67%、22%,第三个柱子应该是 56%、11%、33%。
堆积条形结果图片:
这是我正在使用的代码,带有虚拟数据
df1 <- data.frame(ID = c(1, 2, 3, 4, 5),var1 = c('a', 'b', 'c', 'b', 'a','a', 'b', 'c', 'a', 'b','a', 'c', 'a', 'a', 'c','a', 'b', 'c', 'a', 'b','a', 'a', 'c', 'b', 'b'),var2 = c('l', 'm', 's', 'm', 's','l', 'm', 's', 's', 's','l', 'm', 's', 's', 'l','l', 'm', 's', 's', 'm','l', 'm', 'm', 'm', 'l'))
rs <- factor(df1$var1,levels = c("a","b","c"))
cs <- factor(df1$var2, levels = c("l","m","s"))
ggplot(df1, aes(cs, fill = rs)) + geom_bar() +
labs( x="", y="", title="", fill ="x") + ####LABELS
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black")) + ####BACKGROUND
geom_text(aes(label=..count.., group = cs),stat = "count", position = position_stack(1.05))+
geom_text(aes(label=scales::percent(..count../sum(..count..))), stat='count',position=position_stack(0.5))
我尝试添加以下行,因为 ..count.. 给了我堆栈的值,例如 var1:a、var2:l = 5 和 ..count..,group=cs,给了我堆叠条的总和,在本例中为条 l = 7,但它不起作用。
+geom_text(aes(label=scales::percent(..count../..count..,group = cs)), stat='count',position=position_stack(0.5))
感谢您的帮助。
【问题讨论】: