二进制数据热力图

3

有谁能告诉我如何绘制二进制数据的热力图,类似于此链接中的热力图-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

我得到的输出是:

这里输入图片描述


翻译完成,希望对你有所帮助。
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个回答

1
请尝试此代码,您在维度方面犯了一些错误。
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))

1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接