上周末有位Rapper给我留言,想让我写一个有关emoji的文章。我觉得是一个很不错的idea,也许还有其他人也想在自己的图中加入一些emoji的表情,所以今天就来教大家如何用R把emoji加入到你的图中。
如果我问大家,什么是emoji (https://en.wikipedia.org/wiki/Emoji) ,可能很多人答不上来,但是如果我问大家在用微信或者QQ聊天的时候,会不会给对方发一个笑脸,相信很多人都会。其实,在我们的日常生活中,经常会见到一些emoji符号,比如下面的这些例子:
如果想要找更多的emoji图标,可以去Emojipedia看看(http://emojipedia.org/) 。需要注意的一点是,在不同的设备或是操作系统中,emoji显示的图案会有所差别,比如同一个笑脸在Apple,Google和Microsoft上的图像:
知道什么是emoji了,下面就给大家介绍一个很好用的R包:emojifont (https://cran.r-project.org/web/packages/emojifont/vignettes/emojifont.html) 。emojifont 将一些emoji 字体打包(默认安装的是OpenSansEmoji.ttf),用另外一个R包, showtext 渲染(render)这些字体,然后就可以在基础的R图或者ggplot2图中使用这些字体。 showtext也是一个非常有用的包,由于时间关系,这里不多做介绍,感兴趣的读者可以参考showtext的网页: https://cran.r-project.org/web/packages/showtext/vignettes/introduction.html
emojifont 的安装和使用可以参考emojifont的官方文档,这里就不赘述了。 比较遗憾的是,作者在文档中只告诉我们如何search一个emoji符号,但是没有说明如何列出emojifont能够支持的所有emoji符号以及它们的alias。在实际工作中,我们事先是不知道有哪些emoji可以用。因此,需要有一个cheatsheet来帮助我们方便的查阅可以使用的emoji符号。
为了做出这样一个cheatsheet,我研究了一下emojifont的源代码,结果发现,所有的emoji名称都是来自于一个json文件。这样问题就简单了。我们只要下载这个json文件,把它转换成R的dataframe,然后就可以把所有的emoji和它们所对应的名称都打印出来,方便我们查阅。代码如下:
code1.png
code2.png
总共找到1300多个emoji,但是有一些无法正常显示(有可能是OpenSansEmoji.ttf不支持)。
emoji.png
除了emoji,emojifont还能支持Font Awesome (http://fontawesome.io/) 。那么Font Awesome又是什么呢? Font Awesome是一套很漂亮的矢量图标字体库,做前端开发的时候会经常用到。 对于大多数人来说,并不需要知道什么是矢量图标,什么是CSS,也可以在R中轻松的使用这些字体。
Font Awesome的网站上有一套完整的cheatsheet,可以把它打印出来,方便查阅。Font Awesome 的使用可以参考emojifont的官方文档。
fontawesome_cheatsheet.png
下面我就结合emoji和Font Awesome,做一个示例,给大家画一个Apple Pen的图。这个图没有实际意义,仅仅用来说明如何使用这两种字体。代码如下:
code3.png
最终效果是这样的:
apple_pen.png
有了emojifont这个包,我们就同时拥有了emoji和Font Awesome两个字体库。在作图的时候添加各种丰富的图标,可以让你的R图更加与众不同。
qrcode.jpg
网友评论