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

R绘图中非拉丁文本在部分Linux机器无法显示的问题排查

解决R在Amazon Linux 2上无法显示非拉丁字符(中文、阿拉伯文等)的问题

我碰到过类似的环境差异问题,结合你提供的测试代码和系统信息,核心原因确实是Amazon Linux 2默认缺少支持中文、阿拉伯文等非拉丁字符的字体包。下面是一步步的排查和解决办法:

一、先确认问题根源

1. 检查系统是否有对应字体

登录到Amazon Linux 2的终端,执行以下命令查看已安装的中文、阿拉伯文支持字体:

# 查看中文字体
fc-list :lang=zh
# 查看阿拉伯字体
fc-list :lang=ar

如果这两个命令都没有输出,那百分百是系统没装对应字体。

2. 验证R的可用字体

在R中运行这段代码,看看当前图形设备能调用的字体列表:

library(grDevices)
X11Fonts()

要是列表里全是只支持欧洲字符的字体(比如Arial、Times),那肯定没法渲染中文/阿拉伯文。

二、具体解决步骤

1. 安装必要的字体包

Amazon Linux 2默认的yum源可能没有部分字体,先启用EPEL源(额外的软件包仓库):

sudo amazon-linux-extras install epel -y

然后安装常用的开源非拉丁字体:

# 安装中文字体:文泉驿微米黑(轻量且支持完整中文)
sudo yum install wqy-microhei-fonts -y

# 安装阿拉伯字体:Amiri(开源阿拉伯文印刷字体)
sudo yum install amiri-fonts -y

2. 在R中指定字体渲染

安装完成后,修改你的绘图代码,明确指定使用刚安装的字体。比如针对中文的测试代码:

arabic <-" 丕賱爻毓賵丿賷丞"
png("arabic.png", 500, 500, res = 72)
# 设置全局字体为文泉驿微米黑
par(family = "wqy-microhei")
plot(1, 1, type ="n"); text(1,1, arabic, cex = 4)
dev.off()

如果是阿拉伯文,把family改成"Amiri"即可:

par(family = "Amiri")
text(1, 0.8, arabic)

3. 重启RStudio Server生效

安装字体后,重启RStudio Server让新字体被识别:

sudo rstudio-server restart

4. 备选方案:手动添加字体

如果yum源里找不到你需要的字体,可以手动下载开源字体文件(比如思源黑体、Noto系列字体),然后放到系统字体目录:

# 创建自定义字体目录
sudo mkdir -p /usr/share/fonts/custom
# 复制下载好的字体文件到该目录(替换成你的字体路径)
sudo cp ~/Downloads/NotoSansSC.ttf /usr/share/fonts/custom/
# 更新系统字体缓存
sudo fc-cache -fv

之后在R里就可以通过字体名称(比如"Noto Sans SC")来调用了。

三、额外验证:确认locale设置

虽然你的sessionInfo()里LC_CTYPE已经是en_US.UTF-8,但可以再确认系统全局locale:

localectl status

如果不是UTF-8,执行以下命令设置并重启系统:

sudo localectl set-locale LANG=en_US.UTF-8
sudo reboot

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:08:05