小编Ray*_*ayR的帖子

无法将用户定义函数中的参数传递给 ggplot

我想创建一个用户定义的函数,它包含我发现的一些流行的 ggplot 代码。我收到以下错误:

"Error in `[.data.frame`(DS, , xvar) : object 'xcol' not found" 
Run Code Online (Sandbox Code Playgroud)

下面是一个小的伪数据集来说明这个问题。

n=25
dataTest <- data.frame(xcol=sample(1:3, n, replace=TRUE), ycol = rnorm(n, 5, 2), Cat=letters[1:5])
Run Code Online (Sandbox Code Playgroud)

用户定义的代码如下:

  TRIPLOT <- function (DS,xvar,yvar,zvar) {
 #localenv<-environment()
  gg <- data.frame(x=DS[,xvar],y=DS[,yvar],fill=DS[,zvar])
  empty<-ggplot()+geom_point(aes(1,1),colour="white") + theme( 
    plot.background = element_blank(),
    panel.background = element_blank(),
    panel.grid.minor = element_blank(),
    panel.border = element_blank(),
    panel.background = element_blank(),
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    axis.text.x = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks = element_blank())
  scatter <-ggplot(gg, aes_string(x=xvar,y=yvar), environment=environment())+
    geom_point(aes_string(color=zvar))+
    scale_color_manual(values=c("orange","purple"))+
    theme(legend.position=c(1,1), legend.justification=c(1,1))
  plot_top <- ggplot(gg,aes_string(x=xvar, …
Run Code Online (Sandbox Code Playgroud)

r user-defined-functions ggplot2

3
推荐指数
1
解决办法
1535
查看次数

条形图上方条形图上的ggplot汇总统计量注释

我创建了一个函数,它将数据帧,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
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

Error in layout_base(data, vars, drop = drop) : 
  At least one layer must contain all variables used …
Run Code Online (Sandbox Code Playgroud)

annotations r ggplot2 dplyr

2
推荐指数
1
解决办法
1586
查看次数

标签 统计

ggplot2 ×2

r ×2

annotations ×1

dplyr ×1

user-defined-functions ×1