You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Base R绘制heatmap热图时如何自定义颜色刻度范围

Base R heatmap函数统一色阶范围解决方案

核心思路

Base R内置的heatmap()没有直接暴露色阶范围的调整参数,可通过自定义颜色映射断点的方式强制绑定色阶范围,实现两张热图的色阶统一。

具体实现步骤

  • 第一步:预先定义全局统一的色阶范围、颜色序列和映射断点
# 设定统一色阶的上下限
min_range <- 0
max_range <- 4
# 定义渐变颜色的数量,数值越大渐变越平滑
color_num <- 100
# 生成配色,可替换为cm.colors、terrain.colors或RColorBrewer生成的配色向量
color_pal <- heat.colors(color_num)
# 生成数值到颜色的映射断点,断点数量必须为颜色数量+1
color_breaks <- seq(min_range, max_range, length.out = color_num + 1)
  • 第二步:调用heatmap()时传入col和breaks参数即可
    第一张热图(数据范围02,强制用04色阶)代码:
heatmap(
  as.matrix(data.frame(a=c(1,2),b=c(2,0))), 
  scale = "none",
  col = color_pal,
  breaks = color_breaks,
  # 可选:关闭行列聚类,保证两张热图行列顺序一致方便对比
  Rowv = NA,
  Colv = NA
)

第二张热图(数据范围0~4)用完全相同的color_pal和color_breaks即可保证色阶完全对齐:

heatmap(
  as.matrix(data.frame(a=c(1,4),b=c(2,0))), 
  scale = "none",
  col = color_pal,
  breaks = color_breaks,
  Rowv = NA,
  Colv = NA
)

注意事项

  • 如果你的数据存在超出min_range/max_range的极值,可以将断点调整为color_breaks <- c(-Inf, seq(min_range, max_range, length.out = color_num -1), Inf),超出范围的数值会自动映射到最深/最浅的颜色
  • 如果需要显示统一的色条图例,可以关闭heatmap()默认的图例,自行调用fields::image.plot()在画布空白处添加全局统一的色条

内容的提问来源于stack exchange,提问作者doXa77o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:24:04