ggplot2中facet_wrap搭配geom_text报错:taxa.visited未找到
报错原因与解决方法
报错原因
你在ggplot的全局美学映射(aes)中定义了fill = taxa.visited,但添加geom_text时使用的数据集text_pollinator_A并不包含taxa.visited列。ggplot默认会让所有图层继承全局的美学映射,因此渲染文本图层时,会尝试从text_pollinator_A中查找不存在的taxa.visited变量,最终触发报错。
解决方法
有两种简单的方式可以解决这个问题:
方法1:禁用美学映射继承
给geom_text添加inherit.aes = FALSE参数,让文本图层不继承全局的美学映射,只使用自身定义的映射项:
pollinators_4 <- pollinators_3 + geom_text( data = text_pollinator_A, mapping = aes(x = -Inf, y = -Inf, label = label), hjust = -0.1, vjust = -1, inherit.aes = FALSE )
方法2:覆盖全局的fill映射
在geom_text的aes中显式设置fill = NULL,覆盖全局的填充色映射:
pollinators_4 <- pollinators_3 + geom_text( data = text_pollinator_A, mapping = aes(x = -Inf, y = -Inf, label = label, fill = NULL), hjust = -0.1, vjust = -1 )
两种方法都能解决报错问题,推荐使用方法1,因为文本元素不需要填充色,完全没必要继承全局的fill映射,逻辑更清晰。
内容的提问来源于stack exchange,提问作者Melissa Duda
相关产品推荐
相关产品推荐

