You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggplot2轴标题表达式无法对数字加粗的问题求助

解决ggplot表达式轴标题中数字无法加粗的问题

方法1:使用bquote()构建带变量的加粗表达式

bquote()可以方便地将变量插入到表达式中,同时确保所有内容都被bold()包裹,让数字也能被正确加粗:

test_func <- function(x_title) {
  text <- 1
  
  ggplot(data.frame(x = 1:5, y = 1:5), aes(x, y)) +
    geom_point() +
    labs(x = bquote(bold(Part ~ .(text) ~ .(x_title))))
}

test_func('Value')

方法2:用paste()拼接时为数字添加引号

如果坚持使用paste()+parse()的方式,需要将数字转为带引号的字符串,让parse()将其识别为文本而非数值常量,这样bold()就能作用到数字:

test_func <- function(x_title) {
  text <- shQuote(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, ')')))
}

test_func('Value')

问题原因说明

  1. 原代码中,paste()拼接后得到字符串"bold(Part ~ 1 ~ Value)",parse()会把1解析为数值常量,ggplot的表达式渲染逻辑里,bold()对数值常量的样式处理和文本不同,导致数字无法被加粗。
  2. 直接使用expression(bold('Part 1 Value'))时,整个内容是一个完整字符串,因此全部被加粗。
  3. theme(axis.title = element_text(face = 'bold'))无效,因为当轴标题是解析后的表达式时,表达式内部的样式优先级高于theme的全局设置。

内容的提问来源于stack exchange,提问作者js4032

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:31:00