☰
R绘图中文乱码终极解决方案
2026/10/17 13:08:12 网站建设 项目流程

R 绘图中文支持问题概述

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

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

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

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

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

使用 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())可能不支持中文,建议使用cairo或ragg。
  3. 多平台适配:Linux 系统可能需要安装libcairo2-dev和libfreetype6-dev。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询