2014-10-02 75 views
0

我試圖寫在GGPLOT2一個功能,將獲得此錯誤信息寫繪圖功能:錯誤在試圖GGPLOT2

錯誤layout_base(數據,乏,降=滴):
在至少一層必須包含用於磨製

這裏所有的變量是我的代碼:

growth.plot<-function(data,x,y,fac){ 
gp <- ggplot(data = data,aes(x = x, y = y)) 
gp <- gp + geom_point() + facet_wrap(~ fac) 
return(gp) 
} 

growth.plot(data=mydata, x=x.var, y=y.var,fac= fac.var) 

如果我嘗試withou t時的功能,情節完美地出現

gp1 <- ggplot(data = mydata,aes(x = x.var), y = y.var)) 
gp1+ geom_point()+ facet_wrap(~ fac.var) # this works 
+4

看看'aes_string'。 – Roland 2014-10-02 09:45:54

+0

謝謝,我試過但不幸的是它不起作用。 – user34771 2014-10-02 16:25:50

+0

我認爲[這個答案](http://stackoverflow.com/a/10004944/2461552)可能是你在找什麼。 – aosmith 2014-10-02 16:55:44

回答

0

這裏是可重複的解決方案,你的X,Y和FAC參數必須爲字符傳遞:

library(ggplot2) 

make_plot = function(data, x, y, fac) { 
    p = ggplot(data, aes_string(x=x, y=y, colour=fac)) + 
     geom_point(size=3) + 
     facet_wrap(as.formula(paste("~", fac))) 
    return(p) 
} 

p = make_plot(iris, x="Sepal.Length", y="Petal.Length", fac="Species") 

ggsave("iris_plot.png", plot=p, height=4, width=8, dpi=120) 

enter image description here

由於評論者@羅蘭和@aosmith指出瞭解決這個問題的方法。

+0

非常感謝,它完美的作品。從不容易找到通過小R微妙的方式。 – user34771 2014-10-03 15:22:06