热图可视化不能准确地在R中的矩阵中描绘二进制值

时间:2013-07-18 20:33:24

标签: r matrix binary visualization heatmap

我在csv文件here中有一个二元邻接矩阵,其中0 =不是朋友,1 =是朋友。使用Nathan Yau快速简便的热图教程,我尝试用两种颜色制作热图可视化。我使用下面的代码。

> test <- read.csv("/Users/Cindy/Desktop/untitled.csv", sep=",")
> row.names(test) <- test$name
> test <- test[,2:108]
> test_matrix <- data.matrix(test)
> dim(test)
[1] 107 107
> test_heatmap <- heatmap(test_matrix, Rowv=NA, Colv=NA, col = cm.colors(2), scale="column", margins=c(10,10))

出于某种原因,会发生这种情况:see image

如果查看csv文件,可视化中应该有更多的紫色方块,并且我的可视化中存在令人困惑的白线。

如果有人能帮助我找出问题所在,我会非常感激!

2 个答案:

答案 0 :(得分:0)

问题在于颜色的数量太少,以至于大多数只有“1”作为条目的对不能满足要着色的阈值。看看计数的分布尝试:

table(test_matrix)
test_matrix
   0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15 
9434 2016    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
  16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31 
   1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
  32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47 
   1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
  48   49   50   51   52   53   54   55   56   57   58   59   60   61   62   63 
   1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
  64   65   66   67   68   69   70   71   72   73   74   75   76   77   78   79 
   1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
  80   81   82   83   84   85   86   87   88   89   90   91   92   93   94   95 
   1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
  96   97   98   99  100  101  102  103  104  105  106  107 
   1    1    1    1    1    1    1    1    1    1    1    1 

增加颜色数量可以提供更多信息:

test_heatmap <- heatmap(test_matrix, Rowv=NA, Colv=NA, 
                col = cm.colors(100), scale="column", margins=c(10,10))

答案 1 :(得分:0)

如果您安装了gplots软件包,请尝试使用heatmap.2()函数,它支持相同的语法,但您会获得一个颜色键/图例,它可能会为您提供有关正在进行的操作的详细信息。颜色分解的条款。

一个有用的事情是为这两种颜色创建自己的“调色板”,例如,在你的情况下它很简单,只需要输入 col = c("violet", "turquoise1")

同样有用的是使用cellnotes创建额外的热图。这只是一个热图,您可以在其中显示单元格中的值。然后,您可以查看是否正确分配了01,以及这些白色单元格中发生了什么。

看起来有点像这样 enter image description here