将ggplot2管道输入1个magick对象

时间:2018-01-19 15:40:08

标签: r ggplot2 imagemagick

是否可以将ggplot2的结果直接传递给magick?

已经有效的工作流程:

  1. 我可以用ggplot2创建几个图 plot1,plot2,plot3等结果在plot1.png,plot2.png,plot3.png

  2. 然后我可以使用magick阅读所有png并将所有图片组合成一个gif。

  3. 是否可以在不先保存到磁盘的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

最小的例子(感谢hrbrmstr和jeroen!)

library(magick)
library(ggplot2)
library(purrr)
library(dplyr)

mtcars2 <- 
    mtcars %>% 
    mutate(gear = as.factor(gear))

# create canvas
frames <- image_graph(width = 300, height = 600, res = 150)
# make a ggplot  for every gear
walk(1:nlevels(mtcars2$gear), ~{
    xdf <- filter(mtcars2, gear == levels(gear)[.x]) # makes the   split
gg <- 
    ggplot(data = xdf) +
    geom_point(aes(x= mpg, y = wt))
print(gg)
}) # ends the walk command

#done with plotting
dev.off()

# animate
image_animate(frames, 1)