我正在编写一个函数,将文本和表达式组合起来形成输出图的轴标题。问题是,当我尝试将其加粗时,它不会将该样式应用于数字。以下代码演示了这个问题。
test_func <- function(x_title) {
text <- '1'
ggplot(data.frame(x = 1:5, y = 1:5), aes(x, y)) +
geom_point() +
labs(x = parse(text = paste('bold(Part ~', text, ' ~', x_title, ')'))) +
theme(axis.title = element_text(face = 'bold'))
}
test_func('Value')
为了进行比较,看看当我将完整标题输入到表达式(bold())中时会发生什么。
ggplot(data.frame(x = 1:5, y = 1:5), aes(x, y)) +
geom_point() +
labs(x = expression(bold('Part 1 Value'))) +
theme(axis.title = element_text(face = 'bold'))
我也尝试添加theme(axis.title = element_text(face = 'bold'))
,但没有什么区别。
如何才能使粗体应用到表达式的所有部分?
您可以使用:
这显然覆盖了
ggplot2
face
参数,请参见此处。问题是,当你解析时,字符串中的“1”的值看起来像一个数字,因此它会解析为
bold(Part ~ 1 ~ boo )
。而 plotmath 功能似乎不喜欢加粗数字,但会加粗文本。因此,如果你将值括在引号中,它将保持为字符串或者你可以使用
bquote
粘贴来构建字符串substitute
您可以在这里使用expression
:你也可以使用
ggtext
markdown 来做同样的事情。例如:创建于 2024-10-15,使用reprex v2.1.1