R 中的 Font Awesome,已加载但未被 waffle 找到

Font Awesome in R, loaded but not found by waffle

我从 this website 下载了 otf 文件。我的 IT 部门安装了 "Font Awesome 5 Free Regular",我使用了

library(extrafont)
font_import()
loadfonts(device = "win")

我可以看到 Font Awesome,因为 "Font Awesome 5 Free Regular" 已注册。 当我尝试将它与此测试代码一起使用时:

waffle(c(50, 30, 15, 5), rows = 5, use_glyph = "music", glyph_size = 6)

我明白了

Error: FontAwesome not found. Install via: https://github.com/FortAwesome/Font-Awesome/tree/master/fonts

但是 link 哪儿也去不了。

我想使用 Font Awesome(或一个不错的选择)来制作有趣的华夫饼图表。我是否错误地加载了字体?我缺少更好的选择吗?我一直在使用这个 article as a guide. I have also read a related question here ,但它没有帮助。我已经多次重启 Rstudio(和计算机),但没有成功。

更新

还是不行。我已经删除并重新安装了 waffle 和 emojifont 包。我仍然收到错误代码:"Error: FontAwesome not found. Install via: https://github.com/FortAwesome/Font-Awesome/tree/master/fonts"

如果您打算在 ggplot2 绘图中使用超棒的字体字形,那么您可以使用精彩的 emojifont 包。无需自己手动添加字体。

library("emojifont")
library("waffle")
waffle(c(50, 30, 15, 5), rows = 5, use_glyph = "music", glyph_size = 4)

生成您想要的图表:

更新: 由于您安装的是 otf 字体,而不是可能导致问题的 ttf 字体。 emojifont包中的load.fontawesome()函数有一个默认参数:

load.fontawesome(font = "fontawesome-webfont.ttf")

您可以尝试 1) 安装字体的 ttf 版本或 2) 调用

load.fontawesome(font = "fontawesome-webfont.otf")

在绘图之前(虽然我不确定后者是否有效)。不过值得一试。

您可能想尝试使用 FontAwesome v. 4.7 我遇到了与您相同的问题,但在我安装 .ttf 版本后它立即自行解决了。

我知道很久以前就有人提出并回答了这个问题,但答案对我的代码没有帮助,我从这个来源找到了一些东西:https://www.listendata.com/2019/06/create-infographics-with-r.html 他们有使用 extrafont 库下载 fontawesome 的分步说明。真的很容易。希望这对某人有帮助!基本上,下载fontawesome-webfont.ttf,然后:

library(extrafont)
extrafont::font_import (path="C:/Users/insert/your/own/path", pattern = "awesome", prompt = FALSE)
loadfonts(device = "win")
# check to see if it works:
fonts()[grep("Awesome", fonts())]
#returns fontawesome

然后在制作华夫饼图表时使用 use_glyph = 参数。

对于 2021 年来到这里但无法使用 extrafont 的任何人,这里有一个替代方法:

  1. 使用旧版 FontAwesome ttf, 链接到: https://github.com/FortAwesome/Font-Awesome/releases/tag/v4.7.0
  2. 解压 fontawesome-webfont.ttf 到您的工作目录(或您可以访问的某个目录)
  3. 使用waffleemojifontshowtext包创建图表,示例代码如下
install.packages(c("waffle", "emojifont", "showtext"))
 
library(waffle)
library(emojifont)
library(showtext)

font_add(family = "FontAwesome", 
         regular = "fontawesome-webfont.ttf")

waffle(c(5,12,18), rows = 5, use_glyph = "subway", glyph_size = 10, 
title = "Subways!", legend_pos="right")