我曾经两次使用group_by
,do
和ggplot
创建两个简单的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中工作,那就应该是这样