![](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
这个包为例。
5s无缘无故突然就自带3D效果,可是苹果没送我3D眼镜啊!做为一个果粉,自从乔帮主离去之后,对苹果是越来越无爱了。
anyway,对于这部陪伴许久的手机,还是要纪念一下的。
《按地理位置分面》一文最后我埋了个伏笔,写到最后的时候,我想到的是可以拿来画个元素周期表,但懒得搞,在《ggplot2分面之像素艺术》一文里用一只火鸡展示了用图来拼像素画的思路,回应了前文的伏笔。今天继续展示一个像素画,为了纪念我的iphone5S,当然我要画个苹果🍎出来。
这里的图,用的是emoji来画,如果你还不会用emoji来画图装逼,赶紧戳《看完此文, 你也能够大开脑洞, 上升逼格》。然后用geofacet
来拼出像素画,这个时候,你应该想到可以拿来拼你的照片,画个某个形状的照片墙了。
With ggtree (Yu et al. 2017), it is very easy to create phylomoji. Emoji is internally supported by ggtree.
library(ggtree)
tree_text <- "(((((cow, (whale, dolphin)), (pig2, boar)), camel), fish), seedling);"
x <- read.tree(text=tree_text)
ggtree(x, linetype="dashed", color='firebrick') +
xlim(NA, 7) + ylim(NA, 8.5) +
geom_tiplab(aes(color=label), parse='emoji', size=14, vjust=0.25) +
labs(title="phylomoji", caption="powered by ggtree + emojifont")
面向对象有多种实现方式,R里面就有3种,class-based, method-based, object-based,R6与C++/JAVA一样是class-based的,S3/S4是method-based的,还有一种是object-based的,这在proto包中实现,很多人可能没听说过,但是ggplot2你们一定听过,ggplot2就是object-based的实现,它现在是自己的定制实现,称之为ggproto。
emojifont就是用proto实现的,属于我的练手之作,很高兴深受大家的喜欢。
无缘无故收到好几条消息,原来是用emoji画图。
emojifont
is available in CRAN, you can use the following command to install it.
install.packages("emojifont")
An example of using emoji font in R plot is showed below:
![](http://guangchuangyu.github.io/blog_images/2015/Screenshot 2015-12-16 10.55.49.png)
I have played with emoji in R
for a while. My solution of using it is different from what implemented in emoGG.
emoGG
is a good attemp to add emoji
in ggplot2
. It render emoji
picture (png) and creat a layer, geom_emoji
, to add emoji.
In my opinion, emoji
should be treated as ordinary font in user interface, albeit it maynot be true internally.
It would be more flexible if we can use emoji as ordinary font and in this way user don’t need to learn extra stuff.