带有条形图或马赛克地块的热图

时间:2012-08-24 10:06:46

标签: image r matrix histogram

我有一个矩阵显示两个不同地点的物种之间的特征相似性,即

relationship<-matrix(1:6,ncol=2)
colnames(relationship)<-c("Sp1","Sp2")
rownames(relationship)<-c("Sp3","Sp4","Sp5")

     Sp1 Sp2
Sp3   1   4
Sp4   2   5
Sp5   3   6

我还有一个矩阵显示每个站点的丰富度

abundance<-matrix(1:5,ncol=1)
rownames(abundance)<-c("Sp1","Sp2","Sp3","Sp4","Sp5")
colnames(abundance)<-"abundance"

       abundance
 Sp1         1
 Sp2         2
 Sp3         3
 Sp4         4
 Sp5         5

我想创建一个带有条形图的热图,如下所示:

enter image description here

更新原始问题

或者(正如BenBarnes所建议的)我想创建一个马赛克图,使用丰度来控制图块的大小和矩阵,以指示颜色的“强度”。因此,对于上面的例子非常粗略,马赛克图将如下所示:

enter image description here

此外,我想知道您对哪种方法最明确地显示物种之间的关系以及它们的丰度之间的关系有何见解?

1 个答案:

答案 0 :(得分:3)

使用graphics包函数(条形图,图片等),您可以执行以下操作。

bp1 <- barplot(t(abundance[3:5, ]), width = 0.2, space = 0.7, plot = FALSE)
bp2 <- barplot(t(abundance[1:2, ]), horiz = TRUE, width = 0.05, space = 1, plot = FALSE)


par(fig = c(0, 0.8, 0, 0.8), new = TRUE)
par(xaxt = "n", yaxt = "n")
image(relationship)
par(fig = c(0, 0.8, 0.55, 1), new = TRUE)
barplot(t(abundance[3:5, ]), width = 0.2, space = 0.7)
text(bp1, abundance[3:5,] - 0.5, c("Sp3", "Sp4", "Sp5"))
par(fig = c(0.65, 1, 0, 0.8), new = TRUE)   
barplot(t(abundance[1:2, ]), horiz = TRUE, width = 0.05, space = 1)
text(abundance[1:2,] - 0.5, bp2, c("Sp1", "Sp2"))

enter image description here