解决geom_hex无法按xRV变量填充颜色仅显示灰色六边形的问题
问题原因
geom_hex 默认启用分箱计数的统计逻辑,当你直接将fill映射到xRV时,程序无法判断同一个六边形分箱内存在多个xRV值时该取哪个值做颜色映射,因此会默认显示灰色。
解决方案
方案1:单观测对应独立六边形
如果你的场景中每个观测点对应独立的六边形,无需分箱聚合,可指定统计方式为identity,同时调整分箱大小适配坐标刻度间隔:
library(ggplot2) library(hexbin) ggplot(miheat, aes(x = RelZ, y = IVB)) + geom_hex(aes(fill = xRV), stat = "identity", binwidth = c(1, 1)) + scale_fill_gradient2(low = "red" , mid = "white" , high = "blue", space = "Lab")
可根据实际坐标范围调整binwidth的两个参数,保证每个观测点落在独立分箱内即可正常映射颜色。
方案2:多观测分箱聚合
如果全量数据存在多个观测落在同一个六边形的场景,可指定分箱内xRV的聚合规则(比如取均值、中位数、最大值等),使用summary_hex统计逻辑实现:
library(ggplot2) library(hexbin) ggplot(miheat, aes(x = RelZ, y = IVB, z = xRV)) + geom_hex(stat = "summary_hex", fun = mean) + scale_fill_gradient2(low = "red" , mid = "white" , high = "blue", space = "Lab")
将fun = mean替换为fun = median等其他函数即可切换聚合规则。
内容的提问来源于stack exchange,提问作者npLA5
相关产品推荐
相关产品推荐

