在R中用bquote()和str2lang()为plot()轴加百分号标签遇阻求解决
问题原因与解决办法
原因
单独的%在R中属于特殊运算符符号(常用于自定义二元运算符,如%>%),str2lang()会尝试将输入字符串解析为合法的R表达式,但'%'本身不是有效的表达式,因此无法被正确解析,导致纵轴标签无法正常显示。
解决办法
以下几种方案均符合你必须使用bquote()和str2lang()的要求:
方案1:转义百分号
将标签中的%转义为\\%,让str2lang()将其识别为文本内容:
plot(0, xlab = '', ylab = '') Labels <- c('cm^2~hr^-1', '\\%') mtext(bquote(.(str2lang(Labels[1]))), side = 1) mtext(bquote(.(str2lang(Labels[2]))), side = 2)
方案2:用引号包裹百分号
给百分号添加引号,让str2lang()解析为字符串常量:
plot(0, xlab = '', ylab = '') Labels <- c('cm^2~hr^-1', '"%"') mtext(bquote(.(str2lang(Labels[1]))), side = 1) mtext(bquote(.(str2lang(Labels[2]))), side = 2)
方案3:构造合法的表达式文本
将百分号写成可解析的表达式形式,确保str2lang()能正常处理:
plot(0, xlab = '', ylab = '') Labels <- c('cm^2~hr^-1', 'paste0("%")') mtext(bquote(.(str2lang(Labels[1]))), side = 1) mtext(bquote(.(str2lang(Labels[2]))), side = 2)
内容的提问来源于stack exchange,提问作者David Moore
相关产品推荐
相关产品推荐

