如何在ggplot Y轴标题的括号内添加上标及乘号
在ggplot中设置带括号、乘号和上标的Y轴标题
我尝试为ggplot的Y轴标题添加上标,但始终无法成功,推测是括号内包含特殊符号导致失效。需要的Y轴标题为:Total Density (individuals ∙ L⁻¹)
我已尝试以下9种方法:
- 方法1:
labs(y="Total Density (individuals ∙"~L^-1)
接近目标,但无法添加右括号。
- 方法2:
labs(y="Total Density"~(individuals ∙ L^-1))
运行报错。
- 方法3:
labs(y="Total Density"~(individuals~L^-1))
该方法有效,但添加乘号∙后失效。
- 方法4:
ylab("Total Density" "(individuals p "~L^-1*")")
运行报错。
- 方法5:
ylab("Total Density" (~individuals ∙ L^-1))
运行报错。
- 方法6:
labs(y=expression(Total~Density~(~individuals~∙~L^{-1})))
运行报错。
- 方法7:
labs(y=expression(Total~Density~(individuals ∙ L^-1)))
运行报错。
- 方法8:
ylab(bquote('Total Density (individuals ∙ L^-1)'))
无法将"-1"设置为上标。
- 方法9:
ylab(bquote('Total Density (individuals ∙ L'^-1))
接近目标,但无法添加右括号。
解决方案
方法一:使用expression()配合内置符号
在R的expression()语法中,乘号需用cdot表示,同时通过~分隔文本,用()正确包裹括号内内容:
library(ggplot2) ggplot(mtcars, aes(wt, mpg)) + geom_point() + labs(y = expression(Total~Density~(individuals~cdot~L^{-1})))
方法二:使用bquote()拼接字符串与表达式
如果偏好直接用∙符号,可以通过bquote()将字符串和表达式部分拼接,注意用*连接不同片段以闭合括号:
ggplot(mtcars, aes(wt, mpg)) + geom_point() + ylab(bquote('Total Density (individuals ∙ L'^-1*')'))
问题根源说明
- 直接粘贴的
∙在expression()中不被识别,需替换为语法支持的cdot;若要保留该符号,需放在引号内作为字符串处理。 - 括号需作为表达式的一部分完整包裹,要么在
expression()中直接用(),要么在bquote()中通过*拼接右括号完成闭合。
内容的提问来源于stack exchange,提问作者FishyFishies
相关产品推荐
相关产品推荐

