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

R使用ggplot2导出PDF时U+1xxxx类Unicode字符不显示及导出Word方案求助

解决方法

以下两种路径可满足需求,按需选择即可:

路径1:修复PDF导出乱码问题

此前使用showtext不生效是因为未指定支持U+1xxxx区段Unicode字符的字体,Windows系统自带的Segoe UI Emoji已支持该类emoji字符,按以下步骤调整代码即可:

  • 第一步:安装并加载所需包
install.packages(c("ggplot2", "showtext"), quiet = TRUE)
library(ggplot2)
library(showtext)
  • 第二步:注册支持emoji的字体,开启showtext渲染
# 注册Windows自带的Segoe UI Emoji字体
font_add("segoe_emoji", regular = "seguiemj.ttf")
# 开启showtext全局渲染
showtext_auto()
# 设置绘图默认字体为带emoji支持的字体
theme_update(text = element_text(family = "segoe_emoji"))
  • 第三步:导出PDF
cairo_pdf("plot_fixed.pdf", width = 7, height = 5)
ggplot(mtcars, aes(x=cyl, y=mpg)) + 
  geom_point() + 
  ggtitle("Temperature range \U1F321") 
dev.off()

导出后的PDF插入Word即可同时保留清晰度和正常字符显示。

路径2:直接导出高分辨率内容到Word(无需中转PDF)

如果不想处理PDF字体适配问题,可选以下两种更简便的方案,均能同时保留高分辨率和字符正常显示:

方案A:导出高分辨率PNG

此前导出图片分辨率低是未指定dpi参数,设置dpi≥300即可满足印刷级清晰度:

png("plot_highres.png", width = 2100, height = 1500, res = 300)
ggplot(mtcars, aes(x=cyl, y=mpg)) + 
  geom_point() + 
  ggtitle("Temperature range \U1F321") 
dev.off()

直接将生成的PNG插入Word即可。

方案B:直接插入矢量图到Word

使用officer包可直接将ggplot矢量图插入Word文档,全程无需导出中间文件,适配性最高:

install.packages(c("officer", "rvg"), quiet = TRUE)
library(officer)
library(rvg)

# 新建Word文档
doc <- read_docx()
# 将ggplot转为矢量图插入文档
doc <- body_add_vg(doc, code = print(
  ggplot(mtcars, aes(x=cyl, y=mpg)) + 
    geom_point() + 
    ggtitle("Temperature range \U1F321") 
))
# 保存Word文档
print(doc, target = "result.docx")

生成的Word文档内图表为矢量格式,放大不会模糊,字符显示完全正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:12:03