【问题标题】:Automatically save plot and associated code自动保存绘图和相关代码
【发布时间】:2015-05-11 20:02:27
【问题描述】:

我想将 R 会话中生成的每个绘图和相关代码自动保存在特定目录中。

我注意到 RStudio 将每个图都存储在一个临时文件中(Linux 中的 /tmp/Rtmp*/*.png)。因此,当我关闭 R 时,我的 .Last 函数将所有这些文件复制到保存目录中。但是,我还想在一些 *.Rhistory 文件中复制相关代码(即〜最后 10 行)和这些图(使用 savehistory功能)。该目录将包含以下内容:

  • plot1.png
  • .plot1.Rhistory
  • plot2.png
  • .plot2.Rhistory
  • ...

对我有帮助的第一件事是了解 Rstudio 绘图功能的工作原理,但我没有找到来源。我假设它使用 dev.copy() 作为 dev.list() 输出是:

plot(0)
dev.list()
> RStudioGD       png 
        2         3 

你有什么想法吗?

编辑:查看 rstudio 源,我在 Tools.R 文件中发现了一个 saveGraphicsSnapshot 函数,但我仍然不明白它是如何工作的......

【问题讨论】:

  • 你为什么需要这个?想不出任何用例。
  • 我过去常常从大量数据库中绘制大量图表,但我经常忘记与这些图表相关的确切代码 :) 因此,我的想法是在某些日子里保留我在 R 中的工作的备份跨度>

标签: r plot rstudio


【解决方案1】:

首先,RStudio 是 R 的前端,所以要“了解 RStudio 的绘图功能是如何工作的”……只是要了解 R plot 功能是如何工作的。你可以用谷歌搜索文档。

现在,重点:将plot() 的结果输出到文件的最简单方法是使用here 列出的函数(顺便说一句,我建议你好好看看那个网站...这是 R 的一个很好的学习资源)。在您的代码中,只需输入相关函数:

# A simple example:
x <- rnorm(1000)
pdf('mytestplot.pdf') # This will redirect the output of the plot() function
                      # to a PDF file
hist(x)
dev.off() # This will "turn off" the output "redirecting"... after invoking
          # this function, plots will be shown again in the plot viewer

其他功能:

  • png(): 输出到 PNG 文件
  • jpeg():输出为JPEG文件
  • 等等

希望对你有帮助

【讨论】:

  • 感谢您的回答,但它并不能解决我的问题:我想与 Rstudio 交互地绘制图形,这些图形显示在 RStudioGD 中并同时保存在 png 文件(图像+代码)中。我希望这更清楚。此外,Rstudio 有一些特定的功能 .rs.* (e.g., .rs.activateGraphicsDevice)
猜你喜欢
  • 2020-04-27
  • 2014-10-03
  • 2013-12-06
  • 2011-04-01
  • 1970-01-01
  • 2018-10-26
  • 2018-12-06
  • 1970-01-01
  • 2011-01-17
相关资源
最近更新 更多