ggplot2柱状图数值标签后添加带下标气体名称的实现问题
解决方案
实现气体名称数字下标渲染的核心是使用R内置的plotmath表达式语法,在geom_text中开启parse = TRUE参数即可自动解析下标格式,修改后可直接运行的代码如下:
library(ggplot2) library(ggpubr) # 构造示例数据 GHG = c("CH4", "CO2", "N2O") Value = c(10, 5, 2) df = data.frame(GHG, Value) # 生成带plotmath下标规则的标签 # 正则自动将气体名称中的数字包裹为下标语法[],~是plotmath规定的空格分隔符 df$label <- paste0(Value, "~-~", gsub("(.*?)(\\d+)(.*?)", "\\1[\\2]\\3", GHG)) # 绘图 g1 = ggplot(data=df, aes(x=GHG, y=Value)) + geom_bar(stat="identity") + # 新增parse=TRUE参数解析表达式语法 geom_text(aes(label = label, y= Value, hjust=-0.1), size=4, parse = TRUE) + xlab ("") + ylab ("") + coord_flip() + scale_y_continuous(limits=c(0,11)) + theme(text=element_text(family="serif", size=15, colour="black")) + theme(axis.text.x=element_text(size=15, colour = "black")) + easy_remove_y_axis() g1
关键调整说明
- 用正则匹配将气体名称中的数字替换为
[数字]格式,符合plotmath的下标语法规则,可适配你给出的三类温室气体格式 - 拼接数值和气体名称时使用
~作为分隔符,是plotmath语法要求的空格写法 geom_text中添加parse = TRUE参数,会自动将标签列的字符串解析为数学表达式,完成下标渲染
内容的提问来源于stack exchange,提问作者Andre Mazzetto
相关产品推荐
相关产品推荐

