0

我在这里的 csv 文件中有一个二进制邻接矩阵,其中 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))

出于某种原因,会发生这种情况:参见图片

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

如果有人可以帮助我找出问题所在,我将非常感激!

4

2 回答 2

0

如果您安装了gplots软件包,请尝试该heatmap.2()功能,它支持相同的语法,但您会获得一个颜色键/图例,它可能会为您提供有关颜色分解方面的更多信息。

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

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

它看起来有点像这样 在此处输入图像描述

于 2013-07-19T14:46:45.343 回答
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))
于 2013-07-18T22:34:52.030 回答