gpt4 book ai didi

r - 使用 ggplot2 和 geom_text 在比例条形图中插入标签

转载 作者:行者123 更新时间:2023-12-01 09:12:23 26 4
gpt4 key购买 nike

我正在尝试将标签插入比例条形图中:每个段一个标签,每个段的百分比作为文本。在 thothal 的帮助下,我设法做到了这一点:

var1 <- factor(as.character(c(1,1,2,3,1,4,3,2,3,2,1,4,2,3,2,1,4,3,1,2)))
var2 <- factor(as.character(c(1,4,2,3,4,2,1,2,3,4,2,1,1,3,2,1,2,4,3,2)))
data <- data.frame(var1, var2)


dat <- ddply(data, .(var1), function(.) {
res <- cumsum(prop.table(table(factor(.$var2))))
data.frame(lab = names(res), y = c(res))
})

ggplot(data, aes(x = var1)) + geom_bar(aes(fill = var2), position = 'fill') +
geom_text(aes(label = lab, x = var1, y = y), data = dat)

我想为标签添加每个级别的百分比,而不是级别名称。

enter image description here

感谢任何帮助!

最佳答案

您告诉 geom_text 使用 var2 作为您的 y 变量。这实际上是 as.numeric(data$var2),它转换为 1-4 的范围。但是,您的条形图使用累积百分比。

因此你必须先计算这些位置:

library(ggplot2)
library(plyr) # just for convenience
var1 <- factor(as.character(c(1,1,2,3,1,4,3,2,3,2,1,4,2,3,2,1,4,3,1,2)))
var2 <- factor(as.character(c(1,4,2,3,4,2,1,2,3,4,2,1,1,3,2,1,2,4,3,2)))
data <- data.frame(var1, var2)

dat <- ddply(data, .(var1), function(.) {
res <- cumsum(prop.table(table(factor(.$var2)))) # re-factor to use only used levels
res2 <- prop.table(table(factor(.$var2))) # re-factor to use only used levels
data.frame(lab = names(res), y = c(res), lab2 = c(res2))
})

ggplot(data, aes(x = var1)) + geom_bar(aes(fill = var2), position = 'fill') +
geom_text(aes(label = round(lab2, 2), x = var1, y = y), data = dat)

这会将实验室放在每个栏的末尾。如果你想让它们稍微偏移,你应该在 dat 的创建中发挥作用。

enter image description here

关于r - 使用 ggplot2 和 geom_text 在比例条形图中插入标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26586876/

26 4 0