这可能是一件相当基本的事情,但我似乎找不到有意义的答案。
我正在尝试使用 R 中的 fontawesome 包将表情符号用作 ggplot2 图表中的点,但我很难弄清楚如何为每个变量分配不同的表情符号。
这是一些示例数据(我们将数据框称为“示例”):
sample <- structure(list(month = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L,
4L, 5L, 6L), number = c(456550L, 374616L, 462086L, 436376L, 497526L,
488574L, 119884L, 126356L, 129338L, 177496L, 128404L, 156754L
), variable = c("var1", "var1", "var1", "var1", "var1", "var1",
"var2", "var2", "var2", "var2", "var2", "var2")), class = "data.frame", row.names = c(NA,
-12L))
我看过包作者的 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 经验的用户可以帮助我快速找到答案 - 提前致谢!
最佳答案
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
中使用变量,它应该只用于美学映射。
关于r - 在 ggplot2 中使用 FontAwesome 代替点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465947/