使用ggbackground设置ggplot2的背景
require(ggplot2)
p <- ggplot(iris) + aes(x = Sepal.Length, y = Sepal.Width, color=Species) +
geom_point(size=5) + theme_classic()
首先我们有一个图,是用ggplot2
画的,上面这图大家太熟悉,不打印出来都知道是什么了。
我在最新版的ggimage
中加入了一个ggbackground
的函数,我随便从网上找一张iris
的图片,我们把p
和img
同时传给ggbackground
就好了,非常容易,于是图的内容还是一样,但加了一张我们给定的图片做为背景。
require(ggimage)
img = "https://assets.bakker.com/ProductPics/560x676/10028-00-BAKI_20170109094316.jpg"
ggbackground(p, img)
哇这背景太花了,数据点的pattern并不能容易看清楚,其实图片我们还可以处理的,我们可以用magick
包中处理图片的函数传给ggbackground
,这里我套了两个函数,也是OK的。
require(magick)
ggbackground(p, img,
image_fun = function(x) image_negate(image_convolve(x, 'DoG:0,0,2')))
于是变成上面这样子,有点艺术感。然而还不仅仅是这样,我们可以设置透明度,可以给背景图片填充指定的颜色,喜欢阿猫阿狗的人可以用你喜欢的猫狗图片来做背景了,如果背景太花,除了上面处理一下图片之后,你还可以只用阿猫阿狗的轮廓,然后填充一定的颜色,还可以设置透明,弱化一下背景。
img = "http://phylopic.org/assets/images/submissions/bf5fe2c5-1247-4ed9-93e2-d5af255ec462.512.png"
p1 = ggbackground(p, img) + ggtitle("ggbackground(p, img)")
p2 = ggbackground(p, img, alpha=.3) + ggtitle("ggbackground(p, img, alpha=.3)")
p3 = ggbackground(p, img, alpha=.3, color="steelblue") + ggtitle('ggbackground(p, img, alpha=.3, color="steelblue")')
cowplot::plot_grid(p1, p2, p3, ncol=1)
这里画了三张图,第一张设背景,第二张设了透明度,第三张在第二张的基础上,把图片颜色给换了。
这个ggbackground
只有5行代码,因为它内部使用了geom_image
,geom_image
让我们在ggplot2
中玩图片变得异常容易,更多精彩,请移步往期的文章: