ggplot中Unicode Ø带上标及parse模式显示异常问题求助
可行解决方案
此前方案失效的原因:当
parse=TRUE或使用expression函数时,R会将字符串按照plotmath数学表达式语法解析,未被plotmath内置识别的Unicode符号会被截断或错误渲染;latex2exp包对混合Unicode字符的LaTeX公式渲染支持存在缺陷,因此无法得到预期效果。
方案1:使用原生plotmath的paste()拼接(无需额外安装包)
通过paste()把不需要解析的Ø符号和需要解析的上标部分拆分拼接,所有内容为一个整体,调整图表尺寸不会出现错位:
library(tidyverse) ggplot()+ annotate(geom="text", label = expression(paste("\u00D8", 28.15^{+0.15})), x=0, y=0, parse = TRUE, size=5)+ xlim(c(-0.1, 0.1))+ ylim(c(-0.02, 0.1))+ theme_void()
方案2:使用ggtext包的Markdown渲染(灵活性更高)
如果需要混合更多格式,推荐使用ggtext包的富文本渲染能力,直接用Markdown语法写内容,不需要调用plotmath解析:
# 首次使用先安装包:install.packages("ggtext") library(tidyverse) library(ggtext) ggplot()+ annotate(geom="richtext", label = "Ø28.15<sup>+0.15</sup>", x=0, y=0, size=5, fill = NA, # 去掉背景填充 label.colour = NA # 去掉边框 )+ xlim(c(-0.1, 0.1))+ ylim(c(-0.02, 0.1))+ theme_void()
该方案支持任意Unicode字符和Markdown格式(上标、下标、颜色、加粗等)混合使用,兼容性更强。
内容的提问来源于stack exchange,提问作者Marek Fiołka
相关产品推荐
相关产品推荐

