代码之家  ›  专栏  ›  技术社区  ›  Devyani Samantarai

二进制数据热图

  •  3
  • Devyani Samantarai  · 技术社区  · 7 年前

    谁能告诉我如何绘制二进制数据的热图,类似于此链接中的热图- Binary R heatmap still displays gradient ,则,

    我试图这样做,但我想我无法正确地输入文件。这是我想要绘制的数据的链接- https://www.dropbox.com/s/7k1uskwrfuaugw3/Dataset.csv?dl=0

    这是我的数据的一个子集-

    Strains gene1   gene2   gene3   gene4   gene5
    strain1 1   1   1   1   1
    strain2 1   1   1   1   1
    strain3 1   1   1   1   1
    strain4 1   1   1   1   1
    strain5 1   1   1   1   1
    strain6 1   1   1   1   1
    strain7 1   1   1   1   1
    strain8 1   1   1   1   1
    strain9 1   1   0   0   0
    

    我得到的结果是:

    enter image description here

    library(gplots)
    file1<- read.csv('Dataset.csv',header = T)
    class(file1)
    dat <- data.frame(file1)
    dim(dat)
    names(dat)
    head(dat)
    rownames(dat) <-dat$Strains
    head(dat)
    dim(dat)
    head(dat)
    dat.tdy <- dat[,2:26]
    dat.n <- scale(t(dat.tdy))
    dat.tn <- t(dat.n)
    col = c("black", "grey")
    row_names <- rownames(dat.tn)
    heatmap.2(dat.tn, scale = "none", Rowv = NA, Colv = NA, col = c("black", "grey"), margin=c(6, 4),trace='none',labRow = row_names,
          lhei=c(1,4),cexRow = 1,cexCol = 1,
          lwid=c(.1,1), keysize=0.1, key.par = list(cex=0.5), sepwidth=c(0.1,0.1),
          sepcolor="white",
          colsep=1:ncol(dat),
          rowsep=1:nrow(dat))
    

    这段代码运行正常并给出了输出,但当我与输入文件交叉检查时,我发现热图中的颜色矩阵与输入文件不同。例如,在热图中,gene7只有一个黑匣子,但实际上输入文件中几乎有13个零。

    我觉得有一种更简单的方法。。但由于我对R还不熟悉,我无法理解它。我在提供输入文件时出错了。请帮忙。 谢谢

    2 回复  |  直到 7 年前
        1
  •  1
  •   kcm    7 年前

    请尝试此代码您在维度中出错

    library(gplots)
    file1<- read.csv('Dataset.csv',header = T,row.names = 1)
    class(file1)
    dat <- data.frame(file1)
    dim(dat)
    names(dat)
    head(dat)
    rownames(dat) <-dat$Strains
    head(dat)
    dim(dat)
    head(dat)
    dat.tdy <- dat[,1:25]
    dat.n <- scale(t(dat.tdy))
    dat.tn <- t(dat.n)
    col = c("black", "grey")
    row_names <- rownames(dat.tn)
    heatmap.2(dat.tn, scale = "none", Rowv = NA, Colv = NA, col = c("black", "grey"), margin=c(6, 4),trace='none',labRow = FALSE,
              lhei=c(1,4),cexRow = 1,cexCol = 1,
              lwid=c(.1,1), keysize=0.1, key.par = list(cex=0.5), sepwidth=c(0.1,0.1),
              sepcolor="white",
              colsep=1:ncol(dat),
              rowsep=1:nrow(dat))
    
        2
  •  1
  •   Devyani Samantarai    7 年前

    我找到了一个非常简单的代码来绘制二进制热图-

    library(d3heatmap)
    x<- read.csv("Dataset.csv", header = T, row.names = 1)
    d3heatmap(x, Colv = NA,Rowv = NA, col = c("blue", "red"), scale="none", cexRow = 0.6,cexCol = 1)
    

    使用的示例数据集-

    RC  C1  C2  C3  C4
    R1  1   1   0   1
    R2  0   1   1   0
    R3  0   1   1   1
    R4  1   1   1   0
    R5  1   1   1   1
    R6  0   0   0   1
    R7  1   1   1   1
    R8  1   1   1   1
    R9  0   1   1   1
    R10 1   1   0   0
    

    For a demo dataset