2016-11-07 25 views
0

这可能是一个相当基本的东西,但我似乎无法找到有意义的答案。在ggplot2中使用FontAwesome作为点的替代

我想在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
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中使用变量,它只能用于审美映射。

相关问题