October 13, 2024

R绘图中使用公式和设置字体

版权声明:本文为博主原创文章,转载请注明原文出处!

作者:阿振

写作时间:2024-10-13 10:53:10


使用ggplot2绘制图表科研通过简单的代码实现美观的输出,但是其中有一些让人用着不舒服的地方就是当涉及数学公式时,数学公式的表达和字体的渲染问题。下面提供两种有效解决思路:

  1. 使用 latex2exp库通过LaTex语法进行实现。缺点是字符默认都是非衬线字体,而不是LaTex的数学公式字体。要想单独给公式设置数学字体很困难,目前无解。
1
2
3
4
5
6
7
8
9
10
11
12
library(latex2exp)


labs(
x = "Observed Chl-a",
y = TeX(r"(QAA-Derived $a_{ph}$)"),
title = TeX(r"(Relation between Observed Chl-a and QAA-Derived $a_{ph}$)")
) +
theme_bw() +
theme(
legend.title = element_blank()
)
  1. 使用 ggtext以HTML格式进行渲染,这样字体可以通过CSS自定义。这种方法适用于简单的数学符号表达,优点是可以自定义数学字体,实现专业的文本输出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 添加自定义字体
library(showtext)
font_add(
"LM Roman 10",
regular = "lmroman10-regular.otf",
bold = "lmroman10-bold.otf",
italic = "lmroman10-italic.otf",
bolditalic = "lmroman10-bolditalic.otf"
)
showtext_auto()

# HTML格式的Label
labs(x = "Observed Chl-a",
y = r"(QAA-Derived <i style="font-family: 'LM Roman 10'">a<sub>ph</sub></i>)",
title = r"(Relation between Observed Chl-a and QAA-Derived <i style="font-family: 'LM Roman 10'">a<sub>ph</sub></i>)"
) +
theme_bw() +
theme(
legend.title = element_blank(),
plot.title = ggtext::element_markdown(),
axis.title.y = ggtext::element_markdown()
)