其他
@所有人:用图片来画图,还带美图效果哦!
Hello again Guangchuang,
I just figured how to solve it, but using inherit.aes=F in the geom_nodelab.
I do have another question though. My images have empty/transparent space. When I plot them over the tree, those become white and we can no longer see the branch behind. Is there a way to use geom_nodelab and keep the transparency of the images?
Thank you!
ggimage
图上画图很爽,而这个反哺了ggplot2
和ggtree
,上面这个就是ggtree
用户的提问,图片有背景,那么画在图上就会档住背面的线或点。这个其实早就支持了,因为ggimage
可以在画图的同时对图片进行处理,你只需要传入处理的函数给image_fun
参数就行。而这些可以处理的函数嘛,去magick
包找一下,大把现成的,而且你能够组合它们来完成一些任务。
library(ggplot2)
library(ggtree)
img = "https://raw.githubusercontent.com/YuLab-SMU/treedata-book/master/img/frogs/frog.jpg"
set.seed(1982)
x <- rtree(5)
p <- ggtree(x) + theme_grey()
p1 <- p + geom_nodelab(image=img, geom="image", size=.12) +
ggtitle("original image")
p2 <- p + geom_nodelab(image=img, geom="image", size=.12,
image_fun= function(.) magick::image_transparent(., "white")) +
ggtitle("image with background removed")
cowplot::plot_grid(p1, p2, ncol=2)
这里我故意设成灰背景,便于我们看到白色的背景,去除前和去除后,做一对比。
本文也是我在《看代码学画图 - Nobel化学奖的获得者多半投胎在那些国家?》一文中我说的另外的参数,一般人不知道。同时也回答了SO上的提问:
往期精彩