Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从R将多个绘图导出为png文件?_R_Png - Fatal编程技术网

如何从R将多个绘图导出为png文件?

如何从R将多个绘图导出为png文件?,r,png,R,Png,我有一个R脚本,可以从表格数据创建多个趋势图。我需要将每个绘图导出为png文件。我已经使用png()搜索并尝试(没有结果)。看起来这应该是一个相对容易的解决方案。我的代码如下。有没有人能给我一些建议,告诉我如何解决这个难题 library(dplyr) library(tidyr) library(readr) library(ggplot2) library(magrittr) library(stringi) library(lubridate) library(stats) #load

我有一个R脚本,可以从表格数据创建多个趋势图。我需要将每个绘图导出为png文件。我已经使用png()搜索并尝试(没有结果)。看起来这应该是一个相对容易的解决方案。我的代码如下。有没有人能给我一些建议,告诉我如何解决这个难题

library(dplyr)
library(tidyr)
library(readr)
library(ggplot2)
library(magrittr)
library(stringi)
library(lubridate)
library(stats)

#load in datafiles

c_data <- read_csv  ("C:/Projects/A_AX_tech_memo/data_analysis/AAX_data_2017_dtcts.csv")

C_data_out <-
c_data %>%
group_by(METHOD_NAME, STD_CON_LONG_NAME, SAMP_SITE_NAME, FILTERED_FLAG) %>%
ungroup() %>%
select(METHOD_NAME, STD_CON_LONG_NAME, SAMP_SITE_NAME, SAMP_DATE,   STD_VALUE_RPTD, STD_ANAL_UNITS_RPTD, FILTERED_FLAG, STD_REPORTING_LIMIT, STD_REQUIRED_DETECTION_LIMIT, LAB_QUALIFIER) %>%
rename(Method = METHOD_NAME, Constit = STD_CON_LONG_NAME, Well = SAMP_SITE_NAME, Date = SAMP_DATE, Value = STD_VALUE_RPTD, Unit = STD_ANAL_UNITS_RPTD, Filtered = FILTERED_FLAG, MDL = STD_REPORTING_LIMIT, RDL = STD_REQUIRED_DETECTION_LIMIT, Flag =LAB_QUALIFIER) %>%
mutate(Date = mdy(Date))

dfs <- split(C_data_out, with(C_data_out, interaction(Well, Constit, Filtered)), drop = TRUE)

plotz <- lapply(dfs, function(x){
  ggplot(data = x, aes(Date, Value)) +
    geom_point(data = x, aes(color = Flag), size = 3) +
    ggtitle(paste(x$Well, x$Constit, x$Filtered, sep =".")) +
    ylab("ug/L or Pci/L") +
    geom_smooth(method = "lm", se = FALSE, rm.na = TRUE) +
    geom_hline(aes(yintercept=x$MDL, linetype="MDL"), color ="dark green", lwd=1, lty=2) +
    geom_hline(aes(yintercept=x$RDL, linetype="RDL"), color ="purple", lwd=1, lty=2)
})

非常感谢您提供的任何帮助。

此代码段使用purrr中的map和walk函数工作

mtcars_split <-
  mtcars %>% 
  split(.$cyl) 

paths <- 
  paste0(names(mtcars_split),".png") 

plots <- 
  mtcars_split %>%
  map(~ ggplot(data=.,mapping = aes(y=mpg,x=wt)) + geom_point()) 

pwalk(list(filename=paths,plot=plots),ggsave)
mtcars\u分割%
拆分(.$cyl)

错误消息非常清楚:
i
未定义。也许你指的是类似于mypath的东西谢谢你的建议。使用它可以生成绘图,但它们都是空白的。这非常有效,但在生成第37个绘图后,它会停止并产生错误:seq.default中的错误(h[1],h[2],length.out=n):“to”必须是一个有限数问题可能是37号图中的NA值,而不是函数。就是这样。一旦我解决了这个问题,所有的绘图都生成了。谢谢
 Error in paste(names[i], ".png", sep = "") : object 'i' not found 
mtcars_split <-
  mtcars %>% 
  split(.$cyl) 

paths <- 
  paste0(names(mtcars_split),".png") 

plots <- 
  mtcars_split %>%
  map(~ ggplot(data=.,mapping = aes(y=mpg,x=wt)) + geom_point()) 

pwalk(list(filename=paths,plot=plots),ggsave)