r - ggSave group_by df ggarrange'd ggplot 对象的列表
问题描述
我已经使用group_by
、do
和ggplot
- 两次 - 创建了两个简单dfs
的 Date (组)和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
,
p1 <- cbind(p1, p2[,2])
names(p1) <- c("Date", "Temp", "Light") #Temp & Light were both "plots" from above
并遍历行,将输出保存在 1 行(顶部和底部对象)中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)
}
到目前为止,一切都很好。但是自然厌恶 a for-loop
,所以我试图ggsaving
在 a中做group_by
,使用相同的参数选项,考虑到索引与(我理解的)子集ggsave
的差异,只改变需要的东西:for-loop
group_by
p1 %>% group_by(Date) %>%
ggsave(file = paste0(.$Date, ".png"),
plot = arrangeGrob(Temp, Light),...) #other params hidden here for brevity
grDevices::png(..., res = dpi, units = "in") 中的错误:'pointsize' 参数无效
如果我添加pointsize=10
它说“无效的 bg 值”;添加bg = "white"
:
check.options(new, name.opt = ".X11.Options", envir = .X11env) 中的错误:'grDevices::png(..., res = dpi, units = "in")' 中的参数无效(需要命名参数)
(我也试过降低dpi
没有效果)。可能我正在以错误的方式解决这个问题,例如%>%
在%$%
弗拉德的建议中交换magrittr
:
Error in gList(list(list(data = list(DateTimeUTCmin5 = c(915213660, 915213780, :
only 'grobs' allowed in "gList"
这在调用中Date
和调用中给出了相同的错误。尝试重新创建框架:.$Date
ggsave
do
p1 %>% group_by(Date) %>%
do(ggsave(file = paste0(.$Date, ".png"),"_", .$Date, ".png"),
plot = arrangeGrob(Temp, Light), #etc
安排Grob(Temp,Light)中的错误:找不到对象'Temp'
p1 %>% group_by(Date) %>%
do(ggsave(file = paste0(.$Date, ".png"),"_", .$Date, ".png"),
plot = arrangeGrob(.$Temp, .$Light), #etc
gList(list(list(data = list(DateTimeUTCmin5 = c(915213660, 915213780, : "gList" 中只允许 'grobs') 中的错误
如果我使用%$%
.
有没有人对这些工具有相关的理解,以便他们可以看到我在这里做错了什么?看起来我应该接近,但我越来越多地在黑暗中摸索。任何指针都非常感谢。提前致谢!
同样,如果人们推荐一种不同的方法,我也很感兴趣。让我感到震惊的是,我可以使用lapply
(or parSapply
) 而不是for-loop
. p1
df
运营是否grouped dfs
优于apply
运营?
[编辑:所需的最终输出:ggsave 将每个日期的 1 个图像(上面有 2 个图)转储到指定的文件夹中。本质上,如果我可以让 ggsave 在 grouped_df 中工作,那应该是]
解决方案
推荐阅读
- flutter - 为什么我会出现堆栈溢出?
- javascript - 为什么 forEach 适用于 nodeList 但不适用于集合
- python - 熊猫根据使用超过 20 列的条件为多个列分配值
- php - CentOs7 上的 php exec() 但中止 errno 134
- blogger - 如何通过 html 在 Blogger 中添加自定义 Favicon?
- sql-server-2016 - 如何将 varchar 列与多个值进行比较
- typescript - 如何在 Pulumi 中找到现有的 gitlab 项目集群?
- kubernetes - 是否可以从其他用户部署的集群中获取 helm list
- python - 无法导入“crispy_forms.helper”-Pylint
- vba - Selenium VBA - 如何将鼠标移动到位置(x,y)?