首页 > 解决方案 > 如何调整热图的轴?

问题描述

我正在使用 Jaccard 系数来识别人与人之间的异同。

但是,我正在努力表示系数(0 - 不同,1 相似)。

此外,当我想过去我的数据结构时,我收到以下错误:

dput(head, m) 中的错误:“文件”必须是字符串或连接

要创建热图,我使用以下代码:

heatmap(m, Colv = NA, Rowv = NA, 
        scale = "none", 
        xlab = "Identification Numbers",
        ylab = "Identification Numbers")

当仅使用 12 个案例的部分数据时,我收到以下图表 在此处输入图像描述

如果我增加案例的数量,则热图的轴很难阅读。

如何调整轴以显示每 10 个案例?

另外,如何在热图中添加图例?

非常感谢

在此处输入图像描述

标签: rdataframeheatmap

解决方案


不幸的是,两者都没有内置支持。但这里是轴中断的解决方法:为行名和列名创建一个字符向量,并将 10 个元素中的 9 个替换为空格。

 mat <- matrix(runif(10000, min = 0, max = 10), ncol = 100, byrow = T)

rows <- as.character(1:nrow(mat))
rows[-seq(0, length(rows), 10)] <- ""

cols <- as.character(1:ncol(mat)) 
cols[-seq(0, length(cols), 10)] <- ""

heatmap(mat,
        Colv = NA, Rowv = NA,
        labRow = rows,
        cexRow = 1,
        labCol = cols,
        cexCol = 1)

在此处输入图像描述

如果您愿意使用我levelplot()lattice-package 推荐的另一个包:

(情节毫无意义,它只是展示它可以做什么的视觉效果)

library(lattice)
library(RColorBrewer)

rows <- seq(11010903, 11011203, length.out = nrow(mat))
cols <- seq(11010903, 11011203, length.out = ncol(mat))

pal <- colorRampPalette(c("red", "yellow"), space = "rgb")
levelplot(mat, xlab="", ylab="", 
          row.values = rows, column.values = cols,
          col.regions = pal(5), at = seq(1,10, by = 2), scales = list(tck = c(1,0))) 

在此处输入图像描述


推荐阅读