在ggplot2中使用FontAwesome作为点

时间:2016-11-07 13:05:20

标签: r ggplot2 font-awesome

这可能是一个相当基本的事情,但我似乎无法找到有意义的答案。

我正在尝试使用R中的fontawesome软件包将emojis用作ggplot2图表中的点,但我很难弄清楚如何为每个变量分配不同的表情符号。

这是一些示例数据(我们称之为数据框'样本'):

month   number  variable
1   456550  var1
2   374616  var1
3   462086  var1
4   436376  var1
5   497526  var1
6   488574  var1
1   119884  var2
2   126356  var2
3   129338  var2
4   177496  var2
5   128404  var2
6   156754  var2

我已经从包作者那里看过the example code,但我无法想办法为var1和var2分配一个单独的表情符号。

使用FontAwesome cheatsheet,假设我想要var1为'fa-windows'而var2为'fa-linux'。这是我从包作者的例子中编写的一些绘图代码:

library(ggplot2)
library(emojifont)
library(scales)

load.fontawesome()
testLabels <- fontawesome(c('fa-windows','fa-linux'))

windows() #only necessary if using RStudio

ggplot(sample,aes(x=month,y=number,color=variable))+
  geom_text(aes(label=testLabels),family='fontawesome-webfont', size=6)+
  scale_y_continuous(labels = comma)+
  theme(legend.text=element_text(family='fontawesome-webfont'))

这会抛出一个错误:“错误:美学必须是长度1或与数据相同”,这并不奇怪,因为我没有将var1和var2设置为与testLabels中相关的FontAwesome值相对应。码。但是,我不知道该怎么做,我在网上找不到答案(也许我的搜索技能不足)。

我确信拥有更多ggplot2经验的用户可以帮助我快速找到答案 - 提前感谢!

1 个答案:

答案 0 :(得分:1)

labs <- data.frame(variable=c("var1", "var2"),
                   label = fontawesome(c('fa-windows','fa-linux')))
d <- merge(sample, labs, by.x="variable", by.y="variable")
ggplot(d,aes(x=month,y=number,color=variable))+
  geom_text(aes(label=label),family='fontawesome-webfont', size=6)+
  scale_y_continuous(labels = comma)+
  theme(legend.text=element_text(family='fontawesome-webfont'))

永远不要在aes中使用变量,它只能用于美学映射。