You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac系统下ggplot无法调用Calibri字体的技术求助

在Mac系统中为ggplot配置Calibri字体的解决方案

问题背景

Mac系统下需在ggplot图表中使用Calibri字体,但尝试extrafont和showtext均失败:

  1. 使用extrafont执行以下代码:
font_import(prompt = FALSE, pattern = "calibri")

返回错误:

Scanning ttf files in /Library/Fonts/, /System/Library/Fonts, /System/Library/Fonts/Supplemental, ~/Library/Fonts/ ...
Extracting .afm files from .ttf files...
Error in data.frame(fontfile = ttfiles, FontName = "", stringsAsFactors = FALSE) : 
  arguments imply differing number of rows: 0, 1
  1. 使用showtext执行以下代码:
list_of_fonts <- as.data.frame(font_files())
grep(pattern = "Calibri", x = list_of_fonts$family, ignore.case = TRUE, value = TRUE)

返回结果:

character(0)
  1. 直接在ggplot中调用字体时:
theme_set(theme_minimal(
  base_family="Calibri"
))

报错:

In grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y,  :
  no font could be found for family "Calibri"

注:Calibri字体可在Word中正常使用。

解决方案

方法1:手动指定字体文件路径(showtext适配方案)

Mac上Calibri字体通常存放在/Library/Fonts/或~/Library/Fonts/目录下,直接通过showtext加载具体字体文件:

library(showtext)
library(ggplot2)

# 加载不同字重的Calibri字体
font_add("Calibri", 
         regular = "/Library/Fonts/Calibri.ttf",
         bold = "/Library/Fonts/Calibri Bold.ttf",
         italic = "/Library/Fonts/Calibri Italic.ttf",
         bolditalic = "/Library/Fonts/Calibri Bold Italic.ttf")

# 启用showtext渲染
showtext_auto()

# 测试图表
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title = "Calibri字体测试", x = "车辆重量", y = "百公里油耗") +
  theme_minimal(base_family = "Calibri")

方法2:修复extrafont的字体扫描问题

extrafont报错是因为未匹配到目标字体文件,可手动指定路径导入:

library(extrafont)

# 手动指定Calibri字体文件路径
calibri_file <- "/Library/Fonts/Calibri.ttf"
# 导入单个字体
font_import(paths = dirname(calibri_file), pattern = basename(calibri_file), prompt = FALSE)

# 根据导出设备加载字体库
loadfonts(device = "pdf")   # 导出PDF时用
loadfonts(device = "screen")# 屏幕显示时用

# 测试图表
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title = "Calibri字体测试") +
  theme_minimal(base_family = "Calibri")

方法3:使用systemfonts包替代(现代方案)

systemfonts是适配Mac系统的现代字体处理包,无需复杂导入步骤:

library(systemfonts)
library(ggplot2)

# 确认Calibri是否能被系统识别
systemfonts::match_font("Calibri")

# 设置全局ggplot字体
theme_set(theme_minimal(base_family = "Calibri"))

# 测试图表
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  labs(title = "Calibri字体测试")

关键注意事项

  • 若不确定字体路径,可打开「字体册」找到Calibri,右键选择「在访达中显示」获取准确路径。
  • 导出PDF/PNG时,需确保对应字体加载函数已执行(如showtext_auto()或loadfonts())。

内容的提问来源于stack exchange,提问作者m45ha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:05:24