【问题标题】:Show R heatmap outliers in a different colour以不同颜色显示 R 热图异常值
【发布时间】:2016-09-02 12:24:11
【问题描述】:

希望用不同的颜色标记 R 矩阵中的异常值。 假设我的数据为

1  2  4  2  5
5  4  3  2  3
1 500 5  4  2

现在我想用不同的颜色标记 500,用热图的默认颜色标记矩阵的剩余部分。

有人可以指导我完成整个过程吗?

【问题讨论】:

  • 这个问题相当广泛。没有代码,也没有数据。请添加此内容,以便我们查看您使用的图形系统,例如。
  • df 是我的数据集。所以当我使用下面的函数时,它会被绘制出来。但是 1 2 3 等之间的颜色梯度差异无法区分。所以,我希望这 500 有一些不同的颜色……可能是绿色,而矩阵的其余部分是其他颜色的阴影。热图(as.matrix(sapply(df, as.numeric)) ,scale="column" ,col=heat.colors(256) ,main="Blah Blah" ,Rowv=NA ,Colv=NA )
  • 请编辑您的问题,而不是在 cmets 中添加代码。

标签: r matrix dataframe heatmap


【解决方案1】:

这里有一个不错的解决方法来实现这一点。使用gplots 中的heatmap.2(),您可以为热图中的NA 值指定任何颜色。因此,如果您使用一个简单的函数将源矩阵中的异常值替换为 NA,那么您可以使用任何您喜欢的颜色来表示它们。

首先,选择您的异常值条件。例如,假设任何大于 10 的值都是异常值。

> m
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    2    4    2    5
# [2,]    5    4    3    2    3
# [3,]    1  500    5    4    2

m[m > 10] <- NA

现在绘制热图。

library(plots)
heatmap.2(m, trace = "none", na.color = "Green")

异常值现在很好而且很明显。

【讨论】:

    【解决方案2】:

    如果您想清楚地看到 500,则应指定不缩放。例如,

    m <- matrix(c(1, 5, 1, 2, 4, 500, 4, 3, 5, 2, 2, 4, 5, 3, 2), 
      ncol=5)
    
    heatmap((m<500)+0, scale="none", Rowv=NA, Colv=NA)
    

    【讨论】:

    • 感谢您的帮助。但我想要的是 500 应该是不同的渐变(可能是绿色),其余的数字应该是其他的(可能是橙色)。我也希望标签来。你能帮忙吗
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多