R绘图中文乱码终极解决方案
·
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")
注意事项
- 字体名称匹配:确保
family参数与字体实际名称一致。 - 设备兼容性:部分图形设备(如默认
png())可能不支持中文,建议使用cairo或ragg。 - 多平台适配:Linux 系统可能需要安装
libcairo2-dev和libfreetype6-dev。
通过上述方法,可以灵活地在 R 绘图中实现中文支持,适应不同场景需求。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)