ggplot标签中如何同时拼接字符变量和带上标的文本
解决方案
你可以用以下两种常用方法实现需求:
方法1:使用基础R自带的bquote()函数(无需额外安装包)
bquote()会将.()包裹的内容替换为当前环境中的变量值,写法如下:
name = "Mary" library(ggplot2) ggplot() + ylab(bquote(.(name)~BMI~kg/mm^2))
方法2:使用ggtext包实现markdown格式标签(更灵活,支持复杂格式)
如果需要更丰富的文本格式,可以借助ggtext包的markdown渲染能力,直接拼接变量后用markdown语法写上下标:
name = "Mary" library(ggplot2) library(ggtext) ggplot() + ylab(paste0(name, " BMI kg/mm^2")) + # 开启y轴标签的markdown渲染 theme(axis.title.y = element_markdown())
原代码失效原因
- 用
expression()直接包裹变量时,变量会被识别为表达式符号,不会调用环境中已赋值的变量值 - 把
expression()放在paste()中调用时,表达式会被强制转为普通字符串,数学格式渲染失效
内容的提问来源于stack exchange,提问作者Jeff238
相关产品推荐
相关产品推荐

