这可能是一个相当基本的事情,但我似乎无法找到有意义的答案。
我正在尝试使用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经验的用户可以帮助我快速找到答案 - 提前感谢!
答案 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
中使用变量,它只能用于美学映射。