【发布时间】:2015-01-12 11:14:18
【问题描述】:
我想为不同的变量集运行一个 ggplot。我正在尝试制作一个函数,该函数可以将我想稍后在图中标记的数据、变量及其名称作为参数。以下是我想要的一个例子。您能否建议传递这些论点并获得结果的正确方法?
因为我收到以下错误
unique.default(x, nmax = nmax) 中的错误:
unique() 仅适用于向量
v1 <- rep(c(2,4,6,8,10), each = 6)
v2 <- rep(1:3,10)
v3 <-runif(30,0.01,0.3)
v4 <-runif(30,0.05,0.9)
combined_data <- data.frame(v1,v2,v3,v4)
library(ggplot2)
library(gridExtra)
p1<-myplot(combined_data, v3,v2,v1,"alpha1","beta","gamma")
p2<-myplot(combined_data, v4,v2,v1,"alpha2","beta","gamma")
grid.arrange(p1,p2)
#--------------------------------------------------------------------------
myplot<-function(data, xvar, yvar, legend, xlab="", ylab="", factor="")
{
p<-ggplot(data,aes(x=xvar,y=yvar))+
stat_summary(fun.y=mean,geom="smooth",aes(color=as.factor(legend)),linetype=2)+
labs(x="xlab", y = "ylab", color = "factor")+
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")
)
return(p)
}
【问题讨论】:
-
您可以使用
aes_string将所有变量映射到 ggplot 调用。不过,labs中不需要aes_string。labs(x = xlab, y = ylab)(没有引号)应该可以工作。