本笔记为个人学习整理(图文版),仅供参考。主要参考内容在文末附有链接。如有侵权,请联系删除。
操作环境:
R版本:
R version 4.4.0RStudio版本:
RStudio 2024.04.2 Build 764操作系统:
Windows 11 23h2
本文主要内容:
英文字体设置 基础图形系统 ggplot2
绘图系统中文字体设置 基础图形系统 ggplot2
绘图系统导出 PDF
文件
Hello!大家好呀,今天主要来学习如何设置图形中的字体样式
。
之前的一些基础笔记嗷:
这两篇笔记主要介绍了R语言的基础知识
,以及绘图过程中图形的美化操作
。
无论是毕业论文还是学术期刊,都对图表的字体样式有着一定的要求。比如,有的期刊要求字体为Times New Roman
,有的期刊要求字体为Arial
等。
那么,如何设置绘图过程中字体的样式呢?下面就让我们一起学习一下。
代码注释由GPT产生
英文字体设置
基础图形系统
在R的基础图形系统中,可以使用par()
函数和family
参数来设置字体家族(如Times New Roman
,Arial
等)。如果系统中没有安装所需字体,可以使用extrafont
包加载更多字体。
# 安装并加载extrafont包
install.packages("extrafont")
library(extrafont)
# 导入系统字体
font_import()
# 加载字体
loadfonts(device="win") # Windows系统
loadfonts(device="pdf") # PDF设备
# 使用Times New Roman字体
jpeg("example1_times_new_roman.jpg", width = 800, height = 500, res = 150)
par(family="Times New Roman")
plot(1:10, main="Title in Times New Roman", xlab="X Axis", ylab="Y Axis")
dev.off()
# 使用Arial字体
jpeg("example1_arial.jpg", width = 800, height = 500, res = 150)
par(family="Arial")
plot(1:10, main="Title in Arial", xlab="X Axis", ylab="Y Axis")
dev.off()
解释:
font_import():
从系统中导入所有可用字体,并将它们注册到R
中。如果不执行这句代码,R
将无法识别系统中的字体,后续代码中设置字体会失败或无法找到指定字体。loadfonts(device="win")
: 加载字体到Windows
系统设备。如果不执行这句代码,R
在Windows
系统上生成的图形将无法使用导入的字体。loadfonts(device="pdf")
: 加载字体到PDF
设备。如果不执行这句代码,R在生成PDF
文件时将无法使用导入的字体。
ggplot2绘图系统
在ggplot2
中,可以使用theme()
函数中的element_text()
来设置字体。
# 导入 ggplot2 和 tibble 包
library(ggplot2)
library(tidyverse)
library(RColorBrewer)
library(extrafont)
font_import()
loadfonts(device = "win")
loadfonts(device = "pdf")
colorgroup <- brewer.pal(3, "Set1")
# 创建一个示例数据集
set.seed(123)
data <- tibble(
group = rep(c("A", "B", "C"), each = 100),
value1 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2)),
value2 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2)),
value3 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2))
)
data
# 使用 ggplot2 绘制小提琴图
p <- ggplot(data, aes(x = group, y = value1, fill = group)) +
geom_violin() +
geom_boxplot(width = 0.1, fill = "white", color = "black", alpha = 0.5) +
scale_fill_manual(values = colorgroup)+
theme_classic() +
labs(x = "Group", y = "Value", title = "Violin Plot - Value1", fill = "Group") +
theme(
text = element_text(family = "Times New Roman")
)
p
ggsave("ggplot_font_times.jpg", width = 8, height = 5, dpi = 600)
中文字体设置
基础图形系统
对于中文字体,常用的有宋体(SimSun)
,黑体(SimHei)
等。设置中文字体时,同样可以使用extrafont
包来加载更多字体。
library(extrafont)
# 加载字体
loadfonts(device="win") # Windows系统
loadfonts(device="pdf") # PDF设备
# 使用SimSun字体
jpeg("example1_SimSun.jpg", width = 800, height = 500, res = 150)
par(family="SimSun")
plot(1:10, main="标题(宋体)", xlab="X轴(宋体)", ylab="Y轴(宋体)")
dev.off()
# 使用SimHei字体
jpeg("example1_SimHei.jpg", width = 800, height = 500, res = 150)
par(family="SimHei")
plot(1:10, main="标题(黑体)", xlab="X轴(黑体)", ylab="Y轴(黑体)")
dev.off()
ggplot2绘图系统
# 导入 ggplot2 和 tibble 包
library(ggplot2)
library(tidyverse)
library(RColorBrewer)
library(extrafont)
#font_import()
loadfonts(device = "win")
loadfonts(device = "pdf")
colorgroup <- brewer.pal(3, "Set1")
# 创建一个示例数据集
set.seed(123)
data <- tibble(
group = rep(c("A", "B", "C"), each = 100),
value1 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2)),
value2 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2)),
value3 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2))
)
data
# 使用 ggplot2 绘制小提琴图
p <- ggplot(data, aes(x = group, y = value1, fill = group)) +
geom_violin() +
geom_boxplot(width = 0.1, fill = "white", color = "black", alpha = 0.5) +
scale_fill_manual(values = colorgroup)+
theme_classic() +
labs(x = "Group(组)", y = "Value(值)", title = "Violin Plot - Value1", fill = "Group") +
theme(
text = element_text(family = "SimSun", size = 18)
)
p
ggsave("ggplot_SimSun.jpg", width = 8, height = 5, dpi = 600)
无论是英文还是中文字体,都可以通过以下参数设置不同的样式:face:字体样式(plain=普通,bold=加粗,italic=斜体,bold.italic=加粗斜体)
关于
extrafont
包的一些使用技巧
使用
font_import()
函数来导入系统中的字体。运行一次即可,它会扫描系统字体目录并注册这些字体供R
使用。
使用
fonts()
函数可以查看已经成功导入的字体列表。
导出PDF文件
导出PDF
文件,经常会出各种各样的错误,这里推荐使用Cairo
包来导出PDF文件。
cairo_pdf()
函数用于创建 PDF
文件,并指定要绘制的图形。与普通的 pdf()
函数相比,cairo_pdf()
通常在处理字体和图形输出时更为可靠。
# 导入 ggplot2 和 tibble 包
library(ggplot2)
library(tidyverse)
library(RColorBrewer)
library(extrafont)
library(Cairo)
loadfonts(device = "win")
loadfonts(device = "pdf")
colorgroup <- brewer.pal(3, "Set1")
# 创建一个示例数据集
set.seed(123)
data <- tibble(
group = rep(c("A", "B", "C"), each = 100),
value1 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2)),
value2 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2)),
value3 = c(rnorm(100), rnorm(100, mean = 1.5), rnorm(100, mean = 2))
)
data
# 使用 ggplot2 绘制小提琴图
p <- ggplot(data, aes(x = group, y = value1, fill = group)) +
geom_violin() +
geom_boxplot(width = 0.1, fill = "white", color = "black", alpha = 0.5) +
scale_fill_manual(values = colorgroup)+
theme_classic() +
labs(x = "Group(组)", y = "Value(值)", title = "Violin Plot - Value1", fill = "Group") +
theme(
text = element_text(family = "Times New Roman", size = 18)
)
p
p2 <- p +
labs(x = "分组", y = "值", title = "小提琴图", fill = "分组") +
theme(
text = element_text(family = "SimSun", size = 18),
axis.text = element_text(family = "Times New Roman")
)
cairo_pdf("ggplot_demo.pdf")
print(p)
print(p2)
dev.off()
关于导出
请针对合适的字体使用合适的字体样式。例如:对于中文字体,请使用黑体、宋体等,而不能使用
Times New Roman
等。 它不等同于在word
中先设置中文字体,然后再设置英文字体样式(Times New Roman
)。
主要参考:
extrafont
包帮助文档
本文为个人学习笔记,整理过程难免有误。如有错误,欢迎指正。仅供个人学习使用,如有侵权,请联系删除