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

如何在R中为热图某行添加矩形框并获取热图坐标轴范围

给stats::heatmap的指定行加矩形框的方法

要解决这个问题,核心是理清热图主体的坐标逻辑,以及原始数据行和热图显示行的对应关系:

  1. 保存热图返回结果
    stats::heatmap会返回包含行/列排序索引的列表,这是定位目标行的关键。示例代码:

    set.seed(123)
    mat <- matrix(rnorm(25), nrow = 5, ncol = 5)
    # 绘制热图并保存返回对象
    hm <- stats::heatmap(mat, Colv = NA, scale = "none")
    
  2. 定位目标行在热图中的位置
    热图默认会对行做聚类排序(Rowv=TRUE),原始数据的行在热图里的位置是排序后的顺序。用hm$rowInd可以拿到排序后的行索引,比如要框住原始矩阵的第3行:

    target_pos <- which(hm$rowInd == 3)
    

    如果不需要行聚类,直接设置Rowv=NA,此时hm$rowInd就是1:5,目标行的位置就是它的行号本身。

  3. 绘制矩形框
    热图中每个单元格的宽度、高度都是1,列的左右边界是0.5到ncol(mat)+0.5,目标行的上下边界是target_pos±0.5。直接用rect绘制:

    rect(xleft = 0.5, xright = ncol(mat) + 0.5,
         ybottom = target_pos - 0.5, ytop = target_pos + 0.5,
         border = "red", lwd = 2) # lwd控制框线粗细
    
  4. 验证坐标范围(可选)
    如果想确认热图主体的实际坐标轴范围,可以切换到热图的绘图区域后查看par("usr"):

    # 切换到热图主体区域(默认是布局中的第2行第1列)
    par(mfg = c(2, 1))
    # 查看当前区域的坐标范围
    par("usr")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:22:44