knitr::opts_chunk$set(tidy = FALSE, message = FALSE)
library("ggplot2") library("emojifont") library("colorspace")
RThe emojifont package is designed to bring emoji font to R users and is created for users that are impatient and relutant to learn.
The package is very simple, pack some emoji fonts (currently only EmojiOne.ttf) and use showtext to render the fonts, then we can use the font in either base plot or ggplot2.
Get the released version from CRAN:
install.packages("emojifont")
Or the development version from github:
## install.packages("devtools") devtools::install_github("GuangchuangYu/emojifont")
To use emoji, we need to use their corresponding unicode. Emoji unicode can be found in https://apps.timwhitlock.info/emoji/tables/unicode, or searched using search_emoji function. The search_emoji function will return emoji aliases which can be converted to unicode by emoji function.
library(emojifont) search_emoji('smile') emoji(search_emoji('smile'))
set.seed(123) x <- rnorm(10) set.seed(321) y <- rnorm(10) plot(x, y, cex=0) text(x, y, labels=emoji('cow'), cex=1.5, col='steelblue', family='EmojiOne')
d <- data.frame(x=x, y=y, label = sample(c(emoji('cow'), emoji('camel')), 10, replace=TRUE), type = sample(LETTERS[1:3], 10, replace=TRUE)) library("ggplot2") ggplot(d, aes(x, y, color=type, label=label)) + geom_text(family="EmojiOne", size=6)
To make it easy to used with ggplot2, I implemented a very simple
layer, geom_emoji, to visualize emoji with ggplot2.
ggplot() + geom_emoji("rose", color='steelblue') + theme_void() x = seq(0, 2*pi, length=30) y = sin(x) ggplot() + geom_emoji('heartbeat', x=x, y=y, size=10)
The emojifont package was initially designed for using emoji font. I found that FontAwesome is quite interesting especially in technical world.
The usage is quite similar as using emoji.
set.seed(2016-03-09) fa <- fontawesome(c('fa-github', 'fa-weibo', 'fa-twitter', 'fa-android', 'fa-coffee')) d <- data.frame(x=rnorm(20), y=rnorm(20), label=sample(fa, 20, replace=T)) ggplot(d, aes(x, y, color=label, label=label)) + geom_text(family='fontawesome-webfont', size=6)+ xlab(NULL)+ylab(NULL) + theme(legend.text=element_text(family='fontawesome-webfont'))
To make it easy to used with ggplot2, a corresponding
geom_fontawesome is also provided.
ggplot() + geom_fontawesome("fa-github", color='black') + theme_void()
Creating phylomoji is possible using emojifont and ggtree, please
refer to the Phylomoji session in the treedata book.
RStudio using a different way to open graphics device and showtext is currently incompatible with it.
Since emojifont use showtext as backend to parse emoji font, it also incompatible with RStudio.
The solution is to manually open a window by calling X11() in Linux, quartz() in Mac or windows() in Windows, and create plots on top of that, instead of the built-in device offered by RStudio.
Currently, this package support Emoji Font and Font Awesome.
EmojiOne.ttf is downloaded from https://github.com/13rac1/emojione-color-fontOpenSansEmoji.ttf is downloaded from https://github.com/MorbZ/OpenSansEmojifontawesome-webfont.ttf is downloaded from https://github.com/FortAwesome/Font-Awesome.Feel free to fork this package to add your favorite iconic fonts.
If you have any, let me know. Thx!
Here is the output of sessionInfo() on the system on which this document was compiled:
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.