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

在R Markdown PDF的ggplot中正确显示Unicode字符的问题

解决ggplot中Unicode音标在R Markdown转PDF时显示异常的问题

当R Markdown里的ggplot包含IPA(国际音标)这类Unicode字符时,编译成PDF后会出现字符显示异常的情况,比如音标缺失或乱码。

原问题代码

---
title: "Markdown IPA"
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
- \usepackage{fontspec}
- \setmainfont{Times New Roman}
- \setmonofont{Arial Unicode MS}
date: "2022-08-12"
---
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)

ggplot() +
  geom_text(aes(x = 1:5, y = 1:5), label = 'aɪ.pʰiː.ɛɪ')

问题原因

虽然在LaTeX头部配置了fontspec并指定了支持IPA的字体,但ggplot绘图时使用的是R自身的绘图设备字体,并不会自动继承LaTeX的字体设置,导致音标字符无法被正确渲染。

解决方案

方法1:在geom_text中直接指定支持IPA的字体

修改ggplot代码,给geom_text加上family参数,指定支持Unicode音标字体(比如Arial Unicode MS、Noto Sans等):

ggplot() +
  geom_text(aes(x = 1:5, y = 1:5), label = 'aɪ.pʰiː.ɛɪ', family = "Arial Unicode MS")

方法2:全局设置ggplot的文本字体

通过theme统一设置ggplot所有文本的字体,避免每次都单独指定:

ggplot() +
  geom_text(aes(x = 1:5, y = 1:5), label = 'aɪ.pʰiː.ɛɪ') +
  theme(text = element_text(family = "Arial Unicode MS"))

方法3:使用showtext包加载字体(适用于系统字体识别异常的情况)

如果R无法直接识别目标字体,可借助showtext包加载字体:

library(ggplot2)
library(showtext)

# 加载支持IPA的字体
font_add("Arial Unicode MS", regular = "Arial Unicode MS.ttf")
showtext_auto()

ggplot() +
  geom_text(aes(x = 1:5, y = 1:5), label = 'aɪ.pʰiː.ɛɪ', family = "Arial Unicode MS")

注意事项

  • 确保你的系统中安装了指定的字体(比如Arial Unicode MS通常在Windows系统中默认存在,其他系统可能需要手动安装)
  • 必须保持LaTeX引擎为xelatex,它支持Unicode字符的渲染

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:36:18