R 绘图中文支持问题概述

在 R 语言中进行数据可视化时,默认情况下图形中的中文显示会出现乱码或方框。这是由于 R 的图形设备默认不支持中文字符集。解决这一问题需要调整图形设备参数或使用支持中文的字体。

基本解决方案:设置中文字体

通过 par() 函数设置图形参数,指定支持中文的字体。以下代码演示如何设置系统自带的中文字体(如宋体、黑体):

# 设置图形参数,使用支持中文的字体
par(family = "SimSun")  # 宋体
plot(1:10, main = "中文标题", xlab = "X轴标签", ylab = "Y轴标签")

如果系统没有预装中文字体,可以安装 showtextextrafont 包加载外部字体。

使用 showtext 包动态加载字体

showtext 包允许动态加载系统字体或本地字体文件,支持中文显示:

# 安装并加载 showtext 包
install.packages("showtext")
library(showtext)

# 加载系统字体(如微软雅黑)
font_add("MicrosoftYaHei", "msyh.ttc")  # Windows 系统
showtext_auto()

# 绘制图形
plot(1:10, main = "中文标题(微软雅黑)", family = "MicrosoftYaHei")

使用 ggplot2 时的中文支持

对于 ggplot2 用户,通过 theme()geom_text()family 参数指定中文字体:

library(ggplot2)
library(showtext)

# 加载字体
font_add("STKaiti", "simkai.ttf")  # 楷体
showtext_auto()

# 创建数据框
data <- data.frame(x = 1:5, y = c(2, 4, 1, 6, 3), label = c("苹果", "香蕉", "橙子", "葡萄", "西瓜"))

# 绘制图形
ggplot(data, aes(x, y)) +
  geom_col(fill = "steelblue") +
  geom_text(aes(label = label), family = "STKaiti", size = 8) +
  labs(title = "水果销量", x = "种类", y = "数量") +
  theme(text = element_text(family = "STKaiti"))

导出图形时保留中文

导出图形为 PDF 或 PNG 时,需确保字体嵌入。使用 cairo_pdf()ragg::agg_png() 设备:

# 导出 PDF(支持中文)
cairo_pdf("plot_chinese.pdf", width = 6, height = 4)
plot(1:10, main = "中文标题", family = "SimHei")
dev.off()

# 导出 PNG(通过 ragg 包)
library(ragg)
agg_png("plot_chinese.png", width = 800, height = 600, res = 150)
plot(1:10, main = "中文标题", family = "STKaiti")
dev.off()

自定义字体路径加载

若字体不在系统默认路径,可通过完整路径加载:

library(showtext)
font_add("MyFont", "C:/Path/To/Your/Font.ttf")  # 替换为实际路径
showtext_auto()

plot(1:10, main = "自定义字体", family = "MyFont")

注意事项

  1. 字体名称匹配:确保 family 参数与字体实际名称一致。
  2. 设备兼容性:部分图形设备(如默认 png())可能不支持中文,建议使用 cairoragg
  3. 多平台适配:Linux 系统可能需要安装 libcairo2-devlibfreetype6-dev

通过上述方法,可以灵活地在 R 绘图中实现中文支持,适应不同场景需求。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐