使用geom_density_2d_filled反转viridis色阶时出现错误
解决方法
问题原因
geom_density_2d_filled() 生成的是离散型填充类别(即密度区间,如 (0.00, 0.01]),而默认的 scale_fill_viridis() 是针对连续型数据的颜色映射,二者类型不匹配,因此触发错误。
修正代码
要适配离散型填充,需使用 viridis 的离散版颜色刻度,有两种实现方式:
方式一:显式指定 discrete = TRUE
library(ggplot2) library(viridis) df <- data.frame(x = c(rnorm(2000) + 2, -rexp(1000, rate = 1)), y = c(rnorm(2000) + 2, -rexp(1000, rate = 1)) ) ggplot(df, aes(x = x, y = y)) + geom_density_2d_filled() + scale_fill_viridis(discrete = TRUE, direction = -1)
方式二:直接使用离散版函数 scale_fill_viridis_d()
ggplot(df, aes(x = x, y = y)) + geom_density_2d_filled() + scale_fill_viridis_d(direction = -1)
效果说明
上述两种方式均会反转 viridis 色阶,实现低密度显示浅色、高密度显示深色的需求,同时解决类型不匹配的报错问题。
内容的提问来源于stack exchange,提问作者Thomas Philips
相关产品推荐
相关产品推荐

