meme无非是照片上加两行字,meme这个包本来是练手之作,用来模拟ggplot2的api。结果我后面又实现了字体阴影效果,这次我又带来了外部字体支持。

加载外部字体在R上面主要有extrafont和showtext两个实现,特别是showtext用起来还是非常简单的。我在meme包里写了font_import函数,内部就是用showtext,只是简单的包装了一下,这样小白用户可以直接下个字体就开撸。有阴影效果,有搞笑字体,就万事具备了,这俨然是个专业的meme工具了。

我在meme包里还打包了个pokemon字体,用font_pokemon函数可以加载字体,然后用来画图,就是这么简单。

library(meme)


## import pokemon fonts
## downloaded from <https://fontmeme.com/fonts/pokmon-font/>
font_pokemon()

u <- 'https://ravishly.com/sites/default/files/landscape-1456483171-pokemon2.jpg'
meme(u, "Pokemon", "pikachu i choose you!", font='Pokemon_Hollow')

meme(u, "Pokemon", "pikachu i choose you!", font='Pokemon_Solid', color='#FCCF00')

上面我们先看了搞笑字体的神奇效果,当然正如我前面说的,要让用户可以在网上下载字体,然后开撸,这才是通用的大路。下面的代码给font_import传入dir,它可以是你自己下载字体的目录,这个函数就会干所有事情,然后你直接就可以用了。

## folder that contains bubble1 font
## downloaded from https://fontmeme.com/fonts/bubble-1-font/
dir <- system.file('fonts/bubble', package='meme')
font_import(dir)

meme(u, "the meme package", "is awesome!", font="bubble1")

当然这个函数虽然在meme包里,为了大家创作meme更尽性,但它不限于做meme,加载了字体之后,它可以用于R的其它画图系统中,比如base, grid等等。

library(ggplot2)
qplot(1:10, 1:10) + labs(title="meme is awesome") +
    theme(plot.title=element_text(family='bubble1', size=30, color='firebrick'))