不知不觉中我已经介绍了很多R包,有学术上的ChIPseekertreeioggtreeclusterProfilerGOSemSimseqcomboMSnbase等,当然免不了有吐槽还有抄袭有学R的更新R包,也有桌面小工具,还有画图的ggplot2怎么配色嵌入图片(比如pokemon), 以及emoji作图,也有好玩的贴纸装逼利器


今天要介绍另外一个R包,magick,是R里面玩图片的利器,今天要讲的是在静态图片上加动态图片,这样我们平时画一些学术的图,就可以加点搞笑的动态元素上去,有利于在博客和公众号上装逼。

无非是给我一张静态图当背景,再来一张动态图加在上面,为了让代码可以重用,首先打包个小函数:

add_gif <- function(bg_file, gif_file, out_file, offset, bg_size="500", gif_size="150") {
	library(magick)
	p <- image_read(bg_file)
	g <- image_read(gif_file)
	g <- image_scale(g, gif_size)

	background <- image_background(image_scale(p, bg_size), "white", flatten = TRUE)

	frames <- lapply(g, function(frame) {
  		image_composite(background, frame, offset = offset)
	})

	animation <- image_animate(image_join(frames))
	image_write(animation, out_file)
}

然后就可以来玩了,首先用上次讲到的dotplot做为底图,再从网上找一个动图,调用函数,bingo:

bg_file <-  "dotplot_ggplot.png"
gif_file <- "http://mrwgifs.com/wp-content/uploads/2014/11/HQ-Carlton-Dance-With-a-Transparent-Background-Gif-From-The-Fresh-Prince-Of-Bel-Air.gif"

add_gif(bg_file, gif_file, "dotplot_ggplot2.gif", "+160+350")


第二个实例,用的也是clusterProfiler出的图,这个是enrichMap,依然从网上找一个动图加上去:

f1 <- "https://raw.githubusercontent.com/GuangchuangYu/clusterProfiler/master/vignettes/figures/enrichMap.png"
f2 <- "https://raw.githubusercontent.com/batpigandme/arch_dossiers/master/img/cheryl_blowup_no_bg.gif"

add_gif(f1, f2, "enrichMap_animation.gif", "+350+200")

  • 你也来试试,让我们平时做科研画图多一点小乐趣。
  • 让我们写博客,发公众号,来点逼格。装点十三。
  • 中国人最不缺的就是斗图素材,走你。

包治百病的R包系列

我介绍的包,要么好用,要么好玩,历史好文,值得重温: