ggplot标题无法显示不等号(U+2260)符号,求解决方法
问题原因与解决办法
问题根源
你在expression()里使用\u2260这种Unicode转义是行不通的——expression()遵循的是plotmath语法,它不识别普通的Unicode转义序列。而\u0021属于ASCII字符,plotmath能直接解析,所以正常显示;但\u2260是数学符号,plotmath有自己的语法来表示它,不会解析Unicode转义。
解决方法
方法1:使用plotmath内置的不等号语法
plotmath里专门有表示不等号的命令:!= 或者更规范的\neq,直接在expression()里用就行:
# 用!= main_title <- expression(bold(paste("Sample selection (", psi[3], " != ! 0)"))) # 或者用\neq(更符合数学排版习惯) main_title <- expression(bold(paste("Sample selection (", psi[3], " \neq ! 0)")))
替换原代码里的main_title后,绘图时不等号就能正常显示了。
方法2:用普通字符串+指定支持Unicode的字体
如果坚持要用Unicode字符≠,可以放弃expression(),直接用普通字符串,同时确保标题字体支持Unicode数学符号:
main_title <- "Sample selection (ψ₃ ≠ ! 0)" ggplot(data = testy, aes(x=method2, y = Est)) + geom_point( ) + geom_hline(yintercept = 0, color= "red", linetype = "dashed") + theme(axis.text.x = element_text(angle = 45, hjust = 1), legend.position = "none", plot.title = element_text(face = "bold", family = "Arial Unicode MS")) + # 指定支持Unicode的字体 xlab("") + ylab("") + ggtitle(main_title)
注意:需要系统安装了支持Unicode数学符号的字体(比如Arial Unicode MS、Noto Sans等),根据你的系统替换family参数。
方法3:用bquote()混合plotmath和Unicode
bquote()可以同时支持plotmath语法(比如下标psi[3])和Unicode字符,灵活性更高:
main_title <- bquote(bold("Sample selection ("~psi[3]~"\u2260 ! 0)"))
这里的~是plotmath里的空格符号,用来连接不同元素,确保排版正确。
内容的提问来源于stack exchange,提问作者OCarroll
相关产品推荐
相关产品推荐

