查看原文
其他

使用emoji画图

2016-11-25 Y叔 biobabble



无缘无故收到好几条消息,原来是用emoji画图。



做为emojifont包的作者,我表示很高兴看到自己的包给大家带来乐趣,在回复中@milerdl说emoGG是他用了两个晚上写的,emojifont刚好也是我用了两个晚上写的,一个晚上支持了emoji字体,另一个晚上加入了fontawesome字体。




在写这个包之前,我早就有用emoji在R画图中,写这个包也正是为了回应emoGG,因为我觉得他的实现方式并不理想,而我的更为灵活。


回到主题上,我将展示使用emojifont来画图。


下面这个数据是我每年读书、看电影、听专辑的数目:


> d

   year category num

1  2009     book  35

2  2009    movie  64

3  2009    music  24

4  2010     book  34

5  2010    movie  47

6  2010    music  13

7  2011     book  17

8  2011    movie  18

9  2011    music   2

10 2012     book  25

11 2012    movie  25

12 2012    music   0

13 2013     book  15

14 2013    movie  17

15 2013    music   0

16 2014     book   8

17 2014    movie  11

18 2014    music   1

19 2015     book   5

20 2015    movie  14

21 2015    music   0

22 2016     book   4

23 2016    movie  14

24 2016    music   0


先加载所需的包和emoji字体:

require(ggplot2)

require(ggthemes)

require(emojifont)

load.emojifont()

emo <- emoji(c("book", "movie_camera", "musical_note"))

names(emo) <- c('book', 'movie', 'music')


画出趋势图,并在每个点上用相应的emoji字体标注:

p <- ggplot(d, aes(x=factor(year), y=num, group=category, colour=category))

p <- p +geom_line() +geom_text(aes(label=emo[category]), family='OpenSansEmoji', size=10) +xlab(NULL) + ylab(NULL) 


更改一些背景等主题细节,设置中文字体等:

p <- p + theme_fivethirtyeight() + scale_color_tableau()

p <- p+theme(axis.text.x=element_text(face="bold", size=16), 

axis.text.y=element_text(face="bold", size=16))

 p <- p+theme(legend.text=element_text(size=16, family="OpenSansEmoji"), 

legend.title=element_blank(), legend.position='none')

p <-  p+ ggtitle('Y叔的书影音') + theme(plot.title=element_text(family='STKaiti'))



于是产生下图:




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存