【问题标题】:R: plot saving and file nameR:绘图保存和文件名
【发布时间】:2014-06-12 10:40:18
【问题描述】:

我编写了一个dlply 函数,用于通过两个变量SITESP 进行绘图打印。对于这个例子,它打印了 715 个图,这些图具有动态标题,您可以在我的以下代码中看到:

p <- dlply(SUBTOT_DATE, .(SITE, SP), function(x) {
  ggplot(x, aes(YEAR, SUMIA, group=SITE)) +
  geom_point(size=3, color="red2") +
  geom_line(size=1, color="red2") + 
  ggtitle(ggtitle(bquote(atop(.("Evolution de l'indice d'abondance"), atop(italic(.(paste(unique(as.character(x$SITE))," - ",unique(as.character(x$SP))))), ""))))) +
  theme_bw() +
  xlab("Année") +
  ylab("Somme des IA") +
  theme(legend.direction ="vertical",legend.position = "bottom") +
  guides(color=guide_legend(ncol=2))
})

这很好用,我得到了正确的情节标题(SITESP 的粘贴)。

我写的下一步是使用由SITESP 组成的动态名称保存每个图的循环:

for( i in 1:length(p)) {
  filename<- paste(i, "_", unique(as.character(SUBTOT_DATE$SITE), "_",
                   unique(as.character(SUBTOT_DATE$SP)), ".png", sep="")
  png(file=filename)
  print(p[i])
  dev.off()
}

由于某种原因,我必须在文件名中添加一个数字(迭代号:i),否则一定是某处发生冲突,我的情节没有保存。此代码正在工作并使用由两个变量组成的名称保存每个图形。

但是文件名是错误的,并且不符合情节标题。这并不奇怪,因为这两个块之间没有联系。

我尝试将保存命令放入dlply 函数中,如下所示:

filename <- paste(unique(as.character(x$SITE)), "_", 
                  unique(as.character(x$SP)), ".png", sep="")

这应该可以工作,但事实并非如此!由于某种原因,所有保存的地块都是相同的。现在我不能确定它是否在情节标题之后以正确的名称保存情节。

我错过了语法错误吗?为什么多次保存只有一个情节?根据我对保存循环部分中冲突问题的经验,我猜它应该通过简单地在文件名中添加一个数字来回答(即使它不能以相同的名称保存两个图,因为我没有双打) .但我不知道如何访问 dlply 中的迭代号以将其添加到文件名中。

我很难发布可重现的数据,因为每次 dlply 迭代使用数百行。

【问题讨论】:

  • p 是列表,你必须使用[[ 操作符来提取单个元素,即print(p[[i]])(见?"[["
  • 既然您使用的是 ggplot,请查看 ggsave 函数。它让您的生活更轻松。
  • 感谢zelite,我不知道这个功能,它工作得很好!

标签: r


【解决方案1】:

正如@rcs 提到的,您应该将打印循环更改为

for( i in 1:length(p)) {
  filename<- paste(i, "_", unique(as.character(SUBTOT_DATE$SITE), "_",
                   unique(as.character(SUBTOT_DATE$SP)), ".png", sep="")
  png(file=filename)
  print(p[[i]])
  dev.off()
}

原因是p 是一个列表,您要提取列表中的每个图,而不是图列表。将 '[' 与列表一起使用时,您总是会得到一个列表。

【讨论】:

  • 我用 ggsave() 解决了我的问题,但还是感谢您提供的信息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
相关资源
最近更新 更多