使用ggplot为大型基因组数据集创建热图

时间:2018-02-12 13:46:28

标签: r ggplot2 heatmap

亲爱的StackOverflow社区,

我有一个非常大的数据集,其摘录如下所示:

                     AC010327.1   AC010368.1  AC010525.2
TGYR                     0          0          0.984
BHT                      0.1        0          0
THY_RHE                  0          0.0002     0
FJU_WJNKO                0          0          0
PAED_DISE                0.342      0          0
DID PID                  0          0.3821     0

每列是一个基因,长度为30,000列。总共有9行,每个代码用于疾病类型。这些数字代表统计检验结果,该结果在该疾病针对基因类型进行的0-1之间。

我想以易于查看的形式呈现这一大量数据,并认为热图最适合。

使用:

x <- data
x <-as.data.frame(x)
heatmap(x, scale - 'none')

给我一​​个非常丑陋的数据块。

我一直在尝试使用geom_tile ggplot2,但不断收到错误消息。我有点不确定&#34; aes&#34;这个功能就像我没有命名我的行或名字一样。

如果需要,我可以提供更多信息,但感谢您提供一些指导意见?

非常感谢

更新13/2/18

Using solution below, is there a way of weighting it in preference to results greater than 0?

2 个答案:

答案 0 :(得分:1)

我们可以将数据框格从宽格式转换为长格式,然后使用geom_tile

library(tidyverse)

dat2 <- dat %>%
  rownames_to_column(var = "Disease") %>%
  gather(Gene, Value, -Disease)

ggplot(dat2, aes(x = Gene, y = Disease, fill = Value)) +
  geom_tile() +
  scale_fill_viridis_c()

enter image description here

数据

dat <- read.table(text = "                     'AC010327.1'   'AC010368.1'  'AC010525.2'
TGYR                     0          0          0.984
                  BHT                      0.1        0          0
                  THY_RHE                  0          0.0002     0
                  FJU_WJNKO                0          0          0
                  PAED_DISE                0.342      0          0
                  'DID PID'                  0          0.3821     0",
                  header = TRUE, stringsAsFactors = FALSE)

答案 1 :(得分:0)

当您观察协方差(不同变量之间的差异)时,并假设检查/测试使用了两个像您一样的分类变量,对于相对中等大小的数据集,最好使用geom_tile。

但是,当您的数据集庞大而无法在geom_tile中看到时,最好使用d3heatmap

我可以向您展示一个包含大型数据集的示例,您也可以尝试该示例,它与您的数据集相似。

library(d3heatmap)
url <- "http://datasets.flowingdata.com/ppg2008.csv"
nba_players <- read.csv(url, row.names = 1)
d3heatmap(nba_players, scale = "column")

结果可以在Web浏览器中启动并可以交互播放 在此网站上可以看到示例结果:Output

Check this site for more information

注意: 1。该数据集应为数字数据集,d3热图将不接受任何负值或任何字符 2.为避免出现此问题,您可以为每一行或每一行分配一个百分比份额