R 4.2.2中ggplot使用expression()报错:无效多字节字符串
解决R 4.2.2 + ggplot2中expression()标签的编码报错问题
问题原因
R 4.2.x版本开始默认采用UTF-8作为全局编码,而你代码里的\211是旧编码(如Latin-1)下的八进制转义字符,在UTF-8环境中会被识别为无效的多字节序列,触发报错。
解决方案
直接替换为UTF-8兼容的字符表示方式,以下两种方法任选:
直接输入目标符号
如果你想显示的是±、½这类常见符号,直接在代码里输入对应的UTF-8字符即可:plt1 <- ggplot(MyData, aes(x=A, y=B))+ geom_point(aes(fill=C), size=3, shape=21)+ labs( y = expression(beta ~ "(±)"), # 直接输入目标符号 x = "A", fill = "Banana")+ theme_bw() plot(plt1)使用Unicode转义序列
如果你不确定如何直接输入符号,用\uXXXX格式的Unicode转义码代替(XXXX为符号的十六进制Unicode码)。比如±的Unicode码是00B1,写法如下:plt1 <- ggplot(MyData, aes(x=A, y=B))+ geom_point(aes(fill=C), size=3, shape=21)+ labs( y = expression(beta ~ "(\u00B1)"), # Unicode转义格式 x = "A", fill = "Banana")+ theme_bw() plot(plt1)
补充说明
如果原来的\211对应其他符号,你可以查询该符号的Unicode编码,替换成对应的\uXXXX序列即可。这种方式完全兼容R 4.2+的UTF-8编码设置,不会再出现无效多字节字符串的报错。
内容的提问来源于stack exchange,提问作者Strobila
相关产品推荐
相关产品推荐

