gpt4 book ai didi

r - 排列多个 ggplot2 绘图

转载 作者:行者123 更新时间:2023-12-02 20:03:57 26 4
gpt4 key购买 nike

我正在尝试创建很多图(简单的 x-y 条形图),我想以网格的形式显示它们。当我使用 gridExtra 包的 grid.arrange 时,随着绘图数量的增加,每个单独的绘图都会缩小。有没有办法创建绘图 Canvas ,使其跨越多个页面而不缩小每个单独的绘图?

来自 gridExtra 的简单示例:

require(ggplot2)
require(gridExtra)
plots = lapply(1:50, function(.x) qplot(1:10,rnorm(10),main=paste("plot",.x)))
do.call(grid.arrange, plots)

上面的代码生成 50 个绘图,但它们会缩小以适合 Canvas 。有办法避免这种情况吗?也就是说,让它们跨越多个页面,并且每个页面大约有 9 个左右的图?我可以接受 PNG 或 PDF 文件格式。

在尝试 grid.arrange 之前,我使用了此站点中的代码示例:http://gettinggeneticsdone.blogspot.com/2010/03/arrange-multiple-ggplot2-plots-in-same.html并遇到了同样的问题。

我还没有尝试将不同的数据框组合成一个带有绘图标识符的巨型数据框。然后我正在考虑使用绘图标识符进行分面,但我不确定它是否也会有缩小每个绘图的相同问题。

希望我的问题很清楚......

谢谢,-e

最佳答案

library(gridExtra)
library(ggplot2)
my_func = function (d,filename = "filename.pdf") {
pdf(filename,width=14) # width = 14 inches
i = 1
plot = list()
for (n in names(d)) {
### process data for plotting here ####
plot[[i]] = qplot(x, y, geom="bar", data = my_data,)
if (i %% 9 == 0) { ## print 9 plots on a page
print (do.call(grid.arrange, plot))
plot = list() # reset plot
i = 0 # reset index
}
i = i + 1
}
if (length(plot) != 0) { ## capture remaining plots that have not been written out
print (do.call(grid.arrange, plot))
}
dev.off()
}

关于r - 排列多个 ggplot2 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com