我试图使用heatmap2绘制非对称和非平方矩阵。 但我收到一条消息错误:
Error in axis(1, at = xv, labels = lv) : no locations are finite
Calls: heatmap.2 -> axis
Execution halted
实际上,我的数据在矩阵中是等于0,1还是? (缺失值)。 例如,使用此矩阵:
dat_mat
C1 C2
P17612|KAPCA_HUMAN ? 0
P22612|KAPCG_HUMAN 0 1
P22694|KAPCB_HUMAN 1 0
P31751|AKT2_HUMAN 0 0
预期的结果应该是热图,红色为“0”,绿色为“1”,没有(空白)为“?”。这是我正在使用的R脚本:
heatmap.2(dat_mat,
Rowv = FALSE,
Colv = FALSE,
dendrogram = "none",
scale = "none",
margins = c(12,24),
key = TRUE,
keysize = 1.0,
col = rainbow(512, start = 1, end = 0.4),
density.info="density",
denscol = "black",
xlab="Compounds",
ylab="Targets",
main="X Activity Profile",
tracecol = "black")
答案 0 :(得分:1)
我假设您的数据采用以下格式:
dat_mat<-matrix(sample(c("?","0","1"), 10*2, replace=T), ncol=2)
colnames(dat_mat)<-c("C1","C2")
rownames(dat_mat)<-letters[1:nrow(dat_mat)]
所以你有一个字符矩阵(从你的描述中很难说出来)。好吧,热图需要数值,而且它实际上并不像非标准的缺失值。所以,让我们删除&#34;?&#34;并用NA
替换它们,然后转换为数字
dat_mat[dat_mat=="?"]<-NA
class(dat_mat)<-"numeric"
那就是它。您现在应该可以按照预期绘制
heatmap.2(dat_mat,
Rowv=F, Colv=F, dendrogram="none", scale="none",
margins = c(12,24),
key = TRUE,
keysize = 1.0,
col = rainbow(512, start = 1, end = 0.4),
density.info="density",
denscol = "black",
xlab="Compounds",
ylab="Targets",
main="X Activity Profile",
tracecol = "black"
)