gg保存ggarrange的ggplot对象的df列表group_by

时间:2019-11-14 19:59:32

标签: r ggplot2 dplyr pipe magrittr

我曾经两次使用group_bydoggplot创建两个简单的dfs日期(该组)和一个{{ 1}}的输出,非常感谢本站点中的示例所提供的帮助。简化示例:

ggplot

然后我可以加入那些p1 <- df_i %>% group_by(Date) %>% do( plots = ggplot(data = .) + geom_line() #etc, hugely long and detailed ggplot call omitted for brevity, but it works fine ) # close do

dfs

然后遍历各行,将输出保存在1行(顶部和底部对象)中p1 <- cbind(p1, p2[,2]) names(p1) <- c("Date", "Temp", "Light") #Temp & Light were both "plots" from above ggarranged

png

到目前为止,太好了。但是自然厌恶for (j in 1:nrow(p1)) { ggsave(file = paste0(p1$Date[j], ".png"), plot = arrangeGrob(p1$Temp[[j]], p1$Light[[j]]), device="png",scale=1.75,width=6.32,height=4,units="in",dpi=300,limitsize=TRUE) } ,因此我尝试使用相同的for-loop参数选项在ggsaving中进行group_by,考虑到{ {1}}索引与(我了解的)ggsave子集的索引:

for-loop
  

grDevices :: png(...,res = dpi,units =“ in”)中的错误:无效   'pointsize'参数

如果我添加group_by,它会显示“无效的背景值”;添加p1 %>% group_by(Date) %>% ggsave(file = paste0(.$Date, ".png"), plot = arrangeGrob(Temp, Light),...) #other params hidden here for brevity

  

check.options(新,name.opt =“ .X11.Options”,envir =   .X11env):'grDevices :: png(...,res = dpi,   units =“ in”)'(需要命名为args)

(我也尝试降低pointsize=10无效)。我可能会以错误的方式进行操作,例如将bg = "white"中的Vlad's suggestion中的dpi交换为store中的%>%

%$%

这与magrittr调用中的Error in gList(list(list(data = list(DateTimeUTCmin5 = c(915213660, 915213780, : only 'grobs' allowed in "gList" Date给出了相同的错误。尝试重新创建.$Date框架:

ggsave
  

rangeGrob(Temp,Light)中的错误:找不到对象“ Temp”

do
  

gList(list(list(list(data = list(DateTimeUTCmin5)= c(915213660,   915213780,:“ gList”中仅允许使用“ grobs”

如果我使用 p1 %>% group_by(Date) %>% do(ggsave(file = paste0(.$Date, ".png"),"_", .$Date, ".png"), plot = arrangeGrob(Temp, Light), #etc ,会给出相同的错误。

有人对这些工具有一定的了解,以便他们可以看到我在做什么错吗?似乎我应该靠近,但我越来越在黑暗中摸索。非常感谢任何指针。预先感谢!

同样,如果人们推荐一种不同的方法,我也会感兴趣。令我惊讶的是,我可以使用p1 %>% group_by(Date) %>% do(ggsave(file = paste0(.$Date, ".png"),"_", .$Date, ".png"), plot = arrangeGrob(.$Temp, .$Light), #etc %$%上的lapply(或parSapply)代替for-loop。对p1的操作是否胜过df的操作?

[编辑:所需的最终输出:ggsave将每个日期的1张图像(上面有2个图)转储到指定的文件夹中。本质上,如果我可以让ggsave在grouped_df中工作,那就应该是这样

0 个答案:

没有答案