【发布时间】:2015-08-14 19:20:54
【问题描述】:
我在 ggplot 中有 12 个图,我用 grid.arrange 来排列它们。我手动将网格中的行数设置为 4,将列数设置为 3。由于 3 x 4 = 12,这就像一个魅力。
但是如果我有任意数量的地块怎么办?说 13... 我如何以编程方式找到要使用的行数和列数,以使整个绘图成为最“方形”的形状?
我想在 R 中这样做。
更新 数据链接:http://github.com/ngfrey/DataGenii/blob/master/exampleMedicalData.csv
这是我今天早上正在编写的代码。希望它将提供一个更具说明性的示例。请注意我如何在函数的return(list(plots=plots, numrow=4, numcol=3)) 部分设置行数和列数:
makePlots<- function(fdf){
idx<- which(sapply(fdf, is.numeric))
idx<- data.frame(idx)
names(idx)<- "idx"
idx$names<- rownames(idx)
plots<- list()
for(i in 2:length(idx$idx)) {
varname<- idx$names[i]
mydata<- fdf[, idx$names[i]]
mydata<- data.frame(mydata)
names(mydata)<- varname
g<- ggplot(data=mydata, aes_string(x=varname) )
g<- g + geom_histogram(aes(y=..density..), color="black", fill='skyblue')+ geom_density() + xlab(paste(varname))
print(g)
plots<- c(plots, list(g))
}
return(list(plots=plots, numrow=4, numcol=3 ))
}
res<- makePlots(fdf)
do.call(grid.arrange, c(res$plots, nrow=res$numrow, ncol=res$numcol))
【问题讨论】:
-
情节已生成,您事先不知道它们会有多少?
-
您必须更具体地表达方形的意思,否则
ceiling(sqrt(13))? -
我每天都会收到多个数据集,每个数据集都有未知数量的数值变量。我想为相应数据集中的每个数值变量创建一个密度图网格。我稍后会添加一个示例。
标签: r rows dimensions