2016-11-07 26 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中使用變量,它只能用於審美映射。

相關問題