条形图上条形图上方 ggplot 汇总统计量的注释
Posted
技术标签:
【中文标题】条形图上条形图上方 ggplot 汇总统计量的注释【英文标题】:Annotation of summary statistic on ggplot above bars on barchart 【发布时间】:2014-04-22 05:08:41 【问题描述】:我创建了一个函数,它以数据框、x 和 y 变量以及一个组变量作为参数,它通过 x 变量的级别和组变量的 facet 输出条形图。我想在代表 y 平均值的条形上方放置一个文本标签。我的功能一直有效,直到我 我的功能如下:
XTABAR<- function(DS,xcat,yvar,group,formet=percent,color1=orange,color2=blue,...)
library(ggplot2)
library(dplyr)
library(scales)
localenv<-environment()
gg<-data.frame(DS,x=DS[,xcat],y=DS[,yvar],z=DS[,group] )
gg = transform(summarise(group_by(gg, x), sumvar= mean(y)))
G<-ggplot(gg,aes(x=factor(x),y=y, fill=factor(x)))+stat_summary(fun.y=mean,geom="bar")+facet_wrap(~z)+scale_y_continuous(labels = formet)+xlab(xcat)+ylab(yvar)+scale_fill_manual(values=c(color1,color2))
#H<-G+geom_text(data=gg,aes(label=sumvar,x=factor(x),y=y), position = position_dodge(width = 0.8), vjust=-.6)
H<-G+stat_summary(fun.y = mean, geom="text", aes(label=sumvars), vjust = 0)
#G+scale_fill_manual(values=c("orange","blue"))+ylab("Boo")+xlab("Foo")+scale_y_continuous(labels = met)
print(H)
# The arguments are dataframe (DS); x variable (xcat) y variable (yvar); grouping variable (group) y scale format (formet); and colors for bars
我得到的错误如下:
Error in layout_base(data, vars, drop = drop) :
At least one layer must contain all variables used for facetting
那么任何人都可以帮助我编写代码或理解逻辑,以便我可以学习如何获取条形上方的摘要统计信息吗? 谢谢
【问题讨论】:
【参考方案1】:只有一个数据集的示例:
# create a dataset
set.seed(123)
df <- data.frame(xcol=sample(1:3, 100, replace=TRUE), ycol = rnorm(100, 5, 2), catg=letters[1:5])
# summarising the data
require(plyr)
df2 <- ddply(df, .(xcol, catg), summarise, ave=mean(ycol))
# creating a plot
ggplot(df2, aes(x=factor(xcol),y=ave, fill=factor(xcol))) +
geom_bar(stat="identity") +
geom_text(aes(label=round(ave,2)), vjust = -0.5) +
scale_y_continuous(limits=c(0,7), expand = c(0, 0)) +
guides(fill=FALSE) +
facet_wrap(~catg) +
theme_bw()
导致:
【讨论】:
这是最好的答案。如您所见,我的代表点数只有 6。该网站不会让我投票,直到我达到 15。谢谢您。以上是关于条形图上条形图上方 ggplot 汇总统计量的注释的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化将柱状图(条形图)对应的统计数值添加到柱体的上方实战