我看到了这个答案,但无法复制它.
我得到这样的数据:
df = data.frame(x = rep(sample(letters, 4), 2),
y = round(runif(8,1,100),0),
z = c(rep("group1",4), rep("group2",4)))
# I then add a 'percent' column like so:
df$perc[1:4] = df$y[1:4] / sum(df$y[1:4])
df$perc[5:8] = df$y[5:8] / sum(df$y[5:8])
# Which I then convert like so:
df$perc = paste(round(df$perc * 100, 1), "%", sep="")
# The ggplot:
library(ggplot2)
ggplot(df) +
geom_bar(aes(z, y, fill=x), position="dodge", stat="identity") +
geom_text(aes(z,y,label=perc), position=position_dodge(width=1), size=4)
Run Code Online (Sandbox Code Playgroud)
结果:

我无法弄清楚我做错了什么.
bde*_*est 14
只需一个小改动即可解决问题.您需要group=x在geom_text(aes(...))通话中指定.
ggplot(df) +
geom_bar(aes(z, y, fill=x), position=position_dodge(width=1), stat="identity") +
geom_text(aes(z,y,label=perc, group=x), position=position_dodge(width=1), size=4)
Run Code Online (Sandbox Code Playgroud)
