ggplot标签制作:Unicode上标大写C、Z字符查询及实现问题
解决ggplot含特殊字符标签的问题
两种正确实现方法
方法1:用ggplot原生支持的expression()(推荐)
ggplot的标签支持plotmath表达式语法,直接写出上下标和希腊字母,无需凑Unicode,渲染效果最稳定:
data <- data.frame(x = c(0, 1, 2, 3, 4), y = c(0, 1, 2, 3, 4)) ggplot(data, aes(x = x, y = y)) + geom_line() + xlab(expression(Corr(beta^WAZ, beta^DDC)))
方法2:用正确的Unicode上标字符
之前的问题是找错了Z和C的上标Unicode,大写字母上标的Unicode范围是U+1D2C(A)到U+1D45(Z),对应A-Z的顺序。正确字符如下:
- β:U+03B2
- 上标W:U+1D42
- 上标A:U+1D2C
- 上标Z:U+1D36
- 上标D:U+1D30
- 上标C:U+1D2E
修正后的代码:
ggplot(data, aes(x = x, y = y)) + geom_line() + xlab(paste0("Corr(\u03B2\u1D42\u1D2C\u1D36, \u03B2\u1D30\u1D30\u1D2E)"))
方法3:正确使用bquote()
之前的错误是把bquote()和paste0()混用,导致表达式被转成字符串。直接用bquote()包裹整个表达式即可:
ggplot(data, aes(x = x, y = y)) + geom_line() + xlab(bquote(Corr(beta^WAZ, beta^DDC)))
可用资源
- 查看R内置的plotmath语法:在R控制台输入
?plotmath,里面有所有支持的数学符号、上下标、分式等语法说明,是ggplot标签的官方参考。 - Unicode大写字母上标规律:大写A-Z的上标Unicode从U+1D2C开始依次递增,比如A=1D2C,B=1D2D,…,Z=1D45,不用零散查找单个字符。
内容的提问来源于stack exchange,提问作者Wilson King
相关产品推荐
相关产品推荐

