for循环生成并在单独的文件中保存多个ggplots

时间:2016-11-21 20:51:23

标签: r ggplot2

我的数据(TransDat70)共包含103个变量。前102个被命名为“V1”到“V102”,最后一个变量名为“Time.Min”。

我需要针对变量“Time.Min”生成每个变量(V1到V102)的102 ggplots。然后,我需要将所有这些ggplots保存在一个单独的文件(pdf)中,最好是在彼此旁边/下面,以进行比较。

我尝试使用我能在网上找到的代码但到目前为止没有一个对我有效。

这是我的代码:

var_list = combn(names(TransDat70)[1: 102], 2, simplify = FALSE)
plot_list = list()

for (i in 1: 3) {
    p = ggplot(TransDat70, aes_string(x = var_list[[i]][1], y = var_list[[i]][2])) + geom_point()
    plot_list[[i]] = p
}

for (i in 1: 3) {
    plot70 = paste("iris_plot_", i, ".tiff", sep = "")
    tiff(plot70)
    print(plot_list[[i]])
    dev.off()
}

pdf("plots.pdf")

for (i in 1: 3) {
    print(plot_list[[i]])
}

dev.off()

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果单独表示每个图表都在一个单独的文件中,那么这个怎么样?

library(ggplot2)

# FAKE DATA AS EXAMPLE
TransDat70 <- data.frame(
  1:10,
  1:10,
  1:10,
  1:10,
  1:10
)

colnames(TransDat70) <- c('V1', 'V2', 'V3', 'V4', 'Time.Min')

for (i in 1:(length(TransDat70) - 1)) {
  p <- ggplot(TransDat70, aes_string(x = paste('V', toString(i), sep=''), y='Time.Min')) + geom_point()
  ggsave(paste('~/Desktop/plot_', i, '.pdf', sep=''), p)
}

有关更多选项,请参阅ggsave文档。

如果您打算将它们全部放在一个大文件中,请查看Printing multiple ggplots into a single pdf, multiple plots per page

然而,对于那么多情节,它可能会成为一个巨大的文件,这可能会有问题,特别是如果你的情节中有很多点。在这种情况下,将它们作为单独的文件进行比较可能会更好。