![](https://guangchuangyu.github.io/blog_images/R/geofacet/Screenshot 2017-10-17 10.31.23.png)
这个题目可以放好多不正经的图,我在这个公众号里面已经写过太多,比如《邪恶的曲线》和它的3D版本,《3D版邪恶的曲线》,但这里不涉及太多,只用geofacet
这个包为例。
![](https://guangchuangyu.github.io/blog_images/R/geofacet/Screenshot 2017-10-17 10.31.23.png)
这个题目可以放好多不正经的图,我在这个公众号里面已经写过太多,比如《邪恶的曲线》和它的3D版本,《3D版邪恶的曲线》,但这里不涉及太多,只用geofacet
这个包为例。
在《ggimage:ggplot2中愉快地使用图片》一文中,我展示了「嵌套式绘图」,中间生成了多个饼图,再用这些产生的饼图用于做图,绘制出饼图版的气泡图:
当时还通过每次只画一个州的数据,来演示制作动图:
本文介绍了ggimage包,允许在ggplot2作图时嵌入图片,并支持aes
映射,可以把离散型变量映射到不同图片。目前有几个包可以使用图片嵌入做图,但都是针对特定的场景,这里使用ggimage来展示在这些特定领域里的应用,ggimage的设计是通用的,并不被特定场景所限定,文末又介绍了用R图标来画出R、用饼图来画气泡图等实例。
R 基础图形库(base graphics)可以在做图的时候嵌入图片,使用的是graphics::rasterImage
:
imgurl <- "http://phylopic.org/assets/images/submissions/295cd9f7-eef2-441e-ba7e-40c772ca7611.256.png"
library(EBImage)
x <- readImage(imgurl)
plot(1, type = "n", xlab = "", ylab = "", xlim = c(0, 8), ylim = c(0, 8))
rasterImage(x, 2, 2, 6, 4)
制作了一个banner,用来插入到文后,方便阅读到最后的时候,直接扫描关注。
这图当然用PS一下就可以得到,无非是拼图和加点文字。但做为天天写代码画图的人来说,必然是要纯代码来产生的,而且做科学的人,讲究自动化、可重复性。
就像有些人不理解data scentist为什么讨厌excel一样,觉得无非是工具,没什么好搞阵营的。试想一下,一个分析流程中间有一步要用到excel,需要人工去点点鼠标,这对于讲究自动化、可重复性的data scientist来说是不可接受的。
为了打几个中文字,需要先加载字体,这里我用showtext。
require(showtext)
font.add("heiti", "/Library/Fonts/华文黑体.ttf")
showtext.auto()