为多组y值绘制不同连续颜色刻度(ggplot2)
为两组散点设置独立连续颜色刻度的解决方案
ggplot 默认在同一张图里只能使用一组连续颜色尺度,所以你直接叠加两个 geom_point 会导致它们共用同一套色标。要实现两组独立的连续颜色刻度,推荐使用 ggnewscale 包来添加额外的颜色尺度。
步骤1:安装并加载所需包
install.packages("ggnewscale") library(ggplot2) library(ggnewscale)
步骤2:使用 ggnewscale 绘制双刻度散点图
ggplot(cdep_ex2, aes(x = Value)) + # 第一组:ssp1 的散点及对应颜色刻度 geom_point(aes(y = ssp1, colour = ssp1), size = 3) + scale_colour_viridis_c(name = "SSP1 数值", option = "mako") + # 开启新的颜色尺度,重置颜色映射 new_scale_colour() + # 第二组:ssp3 的散点及对应颜色刻度 geom_point(aes(y = ssp3, colour = ssp3), size = 3, shape = 17) + scale_colour_viridis_c(name = "SSP3 数值", option = "plasma") + theme_minimal() + labs(y = "数值")
代码说明
new_scale_colour()是核心函数,它会让 ggplot 重新初始化颜色尺度,确保后续图层使用独立的颜色映射和刻度。- 你可以用
scale_colour_gradient、scale_colour_distiller等自定义色阶,这里选用的viridis色系对色盲友好,视觉区分度高。 - 给两组点设置不同形状(比如圆形和三角形),能进一步避免颜色混淆,提升数据可读性。
运行代码后,图右侧会生成两个独立的颜色刻度条,分别对应 ssp1 和 ssp3 的数值范围,每组点的颜色会基于各自的数值区间完成映射。
内容的提问来源于stack exchange,提问作者MoonS
相关产品推荐
相关产品推荐

