ggplot2中geom_point用大脑emoji作自定义形状报错的求助
问题解答
需求可行性
可行,但无法直接通过geom_point()的shape参数实现,需要换用其他geom函数。
报错原因
ggplot2中geom_point()的shape参数由translate_shape_string()函数处理,该函数仅支持Unicode基本多语言平面(BMP)内的字符(码点范围U+0000至U+FFFF)。
大脑🧠的Unicode码点是U+1F9E0,属于增补多语言平面(SMP),这类字符需要用UTF-16代理对表示,translate_shape_string()无法正确解析这类多码点字符,会将其拆分成无效片段,从而抛出Shape aesthetic contains invalid value: "ᾞ0"的错误。而心形❤(U+2764)属于BMP单码点字符,因此能被正常解析。
解决方案
改用geom_text()或geom_label()直接渲染emoji,这两类geom支持完整的Unicode字符集,包括增补平面的emoji。示例代码如下:
library(ggplot2) df <- read.table(text="x y 1 3 2 4 3 6 4 7", header=TRUE) # 基础版本:渲染大脑emoji ggplot(data = df, aes(x = x, y = y)) + geom_text(label = "\U1F9E0", size = 12) # 自定义颜色版本 ggplot(data = df, aes(x = x, y = y)) + geom_text(label = "\U1F9E0", size = 12, colour = "#654321")
内容的提问来源于stack exchange,提问作者rempsyc
相关产品推荐
相关产品推荐

