使用for创建多个点阵图

时间:2017-03-22 13:14:29

标签: r for-loop lattice

我正在尝试使用网格命令生成多个图,如下所示:

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
admin.auth().createCustomToken(uid, additionalClaims ? additionalClaims : {})

问题是,虽然单个代码片段工作正常但是在执行for循环时生成的文件没有任何绘图。该代码适用于非格子生成的其他图。有谁知道如何解决这个问题?

此致 大卫

1 个答案:

答案 0 :(得分:0)

lapply函数包含在索引遍历中的操作是一种可扩展的解决方案。     来自ggplot的facet_grid提供了另一种绘图方案。

注意aes_string用于字符串变量和as.formula用于构造动态公式。

data(mtcars)

library("lattice")
library("ggplot2")


 fn_exportPlot = function(
 dataObj = mtcars, 
 indepVar  = "cyl", 
 depVar = "mpg",
 groupVar = "am",
 plotEngine=c("lattice","ggplot")) {

filePath =  paste0(indepVar,"_",plotEngine,'.png')

png(filePath,width=760) 


if(plotEngine=="lattice"){ 

formulaVar = as.formula(paste0(depVar," ~ ",indepVar,"|",groupVar))

 print(xyplot(formulaVar,data=dataObj))

}else{

 groupForm = as.formula(paste0("~ ",groupVar))

 gg = ggplot(mtcars,aes_string(indepVar,depVar)) + geom_point(shape=1) + facet_grid(groupForm)

 print(gg)


}

dev.off()


}

varList = c("cyl","disp")

lapply(varList,function(x) fn_exportPlot(indepVar = x,plotEngine="lattice") )
lapply(varList,function(x) fn_exportPlot(indepVar = x,plotEngine="ggplot") )

<强>图: enter image description here

enter image description here