【问题标题】:how can i create a function to produce a pdf document of plots我如何创建一个函数来生成一个 pdf 绘图文档
【发布时间】:2020-07-27 04:37:27
【问题描述】:

我有几个要绘制成 pdf 的绘图对象。我如何编辑下面的代码来创建一个函数来生成相同的 pdf 图:

地块有不同的标题'main'。

pdf(file="results/sitar_df3df8_m.pdf")
plot(alsp_logbmc_sitar_m_3df, ylim = c(500,3500), main = "ALSPAC Males: df=3", xlab = "Age - y",  ylab = "BMC - g")
plot(alsp_logbmc_sitar_m_4df, ylim = c(500,3500), main = "ALSPAC Males: df=4", xlab = "Age - y",  ylab = "BMC - g")
plot(alsp_logbmc_sitar_m_5df, ylim = c(500,3500), main = "ALSPAC Males: df=5", xlab = "Age - y",  ylab = "BMC - g")
plot(alsp_logbmc_sitar_m_6df, ylim = c(500,3500), main = "ALSPAC Males: df=6", xlab = "Age - y",  ylab = "BMC - g")
plot(alsp_logbmc_sitar_m_7df, ylim = c(500,3500), main = "ALSPAC Males: df=7", xlab = "Age - y",  ylab = "BMC - g")
plot(alsp_logbmc_sitar_m_8df, ylim = c(500,3500), main = "ALSPAC Males: df=8", xlab = "Age - y",  ylab = "BMC - g")
plot(bmdcs_logbmc_sitar_m_3df, ylim = c(500,3500), main = "BMDCS Males: df=3", xlab = "Age - y",  ylab = "BMC - g")
plot(bmdcs_logbmc_sitar_m_4df, ylim = c(500,3500), main = "BMDCS Males: df=4", xlab = "Age - y",  ylab = "BMC - g")
plot(bmdcs_logbmc_sitar_m_5df, ylim = c(500,3500), main = "BMDCS Males: df=5", xlab = "Age - y",  ylab = "BMC - g")
plot(bmdcs_logbmc_sitar_m_6df, ylim = c(500,3500), main = "BMDCS Males: df=6", xlab = "Age - y",  ylab = "BMC - g")
plot(bmdcs_logbmc_sitar_m_7df, ylim = c(500,3500), main = "BMDCS Males: df=7", xlab = "Age - y",  ylab = "BMC - g")
plot(bmdcs_logbmc_sitar_m_8df, ylim = c(500,3500), main = "BMDCS Males: df=8", xlab = "Age - y",  ylab = "BMC - g")
dev.off()

【问题讨论】:

  • 有什么问题?我希望这会产生一个 12 页的 PDF,每页一个图。 (未经证实,没有可重复的问题。)
  • 您可以使用gsub 将对象名称的第一位和最后一位放入您的“main”中。
  • 你能展示一下 gsub 是如何工作的吗?

标签: r plot functional-programming tidyverse data-manipulation


【解决方案1】:

假设:示例绘图函数调用中每个绘图的第一个参数是数据框。

步骤

  1. 创建一个需要绘制的数据框列表。[类似于下面]

    ldf <- list(alsp_logbmc_sitar_m_3df, alsp_logbmc_sitar_m_4df, alsp_logbmc_sitar_m_5df)

  2. 为相同序列中的每个图创建一个名称向量。

    plot_name <- paste0("ALSPAC Males: df=", 3:5)

  3. 调用下面的函数。

    plot_df_to_pdf_func <- function(list_of_dfs, pdf_name = "stack.pdf") { ldf <- list_of_dfs pdf(file = pdf_name) for (i in seq_along(ldf)) { name <- plot_name[i] df <- ldf[[i]] plot(df, main = name, xlab = "Age - y", ylab = "BMC - g") } dev.off() }

    plot_df_to_pdf_func(ldf)

免责声明:该功能可能不是最好的版本。请根据您的使用情况即兴发挥。此外,欢迎所有建议。

谢谢!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2014-08-16
    • 2021-12-13
    • 2023-03-14
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多