我,这是我的问题。
我想用ggplot2创建一个geom_bar,条形图上有标签。
这是一个可重复的例子和生成的图:
prop = c(rep("A",2),rep("B",2),rep("C",2))
n = c(rep(29,2),rep(63,2),rep(25,2))
var = c(rep(c("sortant","entrant"),3))
value = c(10,19,43,20,10,15)
mydata = data.frame(cbind(prop,n,var,value))
> mydata
prop n var value
A 29 sortant 10
A 29 entrant 19
B 63 sortant 43
B 63 entrant 20
C 25 sortant 10
C 25 entrant 15
mydata$n = as.integer(as.character(mydata$n))
mydata$value = as.integer(as.character(mydata$value))
ggplot(data = mydata)+aes(x = prop, y = value, fill = var)+geom_bar(stat = 'identity')+
scale_fill_brewer(palette = 'Paired')+geom_text(aes(label = value))
我想制作这个情节,而不是创造" y_pos"手动(如下面的例子),因为我必须每周用不同的数据制作这个图。
mydata2 = mydata
mydata2$y_pos = c(7,20,20,50,7,17)
>mydata2
prop n var value y_pos
A 29 sortant 10 7
A 29 entrant 19 20
B 63 sortant 43 20
B 63 entrant 20 50
C 25 sortant 10 7
C 25 entrant 15 17
ggplot(data = mydata2)+aes(x = prop, y = value, fill = var)+geom_bar(stat = 'identity')+
scale_fill_brewer(palette = 'Paired')+geom_text(aes(label = value, y = y_pos))
使用此代码,我有我想要的情节,但我不想手动制作一些变量:
如果有可能,我该如何制作这个情节:
具有良好的价值
按正确的顺序
在正确的地方?
在此先感谢,任何帮助或例子都值得赞赏!
注意:(我不想使用position_dodge(),我想保留这种格式)
答案 0 :(得分:5)
您可以将position
内的geom_text
参数与position_stack()
一起使用:
library(ggplot2)
ggplot(data = mydata)+aes(x = prop, y = value, fill = var)+
geom_col()+
scale_fill_brewer(palette = 'Paired')+
geom_text(aes(label = value), position = position_stack(vjust = .5))