将矩阵中的单元格值输入到r中的格子中生成的水平图

时间:2014-04-03 04:09:21

标签: r matrix panel lattice levelplot

我知道这个帖子 - How to show matrix values on Levelplot

和这个帖子 - Showing data values on levelplot in R

提出类似的问题。但我不太清楚如何使代码适应我正在尝试的内容。

我有一个矩阵(M1),我可以从中制作一个水平图。我想要做的是将M1中每个'单元'的相应值添加到级别图中的相应“单元”。我一直在尝试使用panel.levelplot,但我无法弄清楚如何定义变量x,y,z。

后续问题是...如果我可以从矩阵M1创建一个水平图,但我想从另一个大小完全相同的矩阵(M2)中添加值。怎么办呢?

示例数据:

#Matrix1
M1 <- matrix(0, nrow=5, ncol=5)
M1[upper.tri(M1, diag = FALSE)]<-1
M1

#Matrix2
M2<-matrix(sample.int(25, replace = TRUE), nrow = 5, ncol = 5)
M2

#This makes a levelplot but how to add the values from a) Matrix M1, b) Matrix M2
levelplot(M1[1:ncol(M1),ncol(M1):1])

1 个答案:

答案 0 :(得分:1)

例如,在第一个问题之后,您只需稍微修改它以包含M2值。

myPanel <- function(x, y, z, ...) {
  panel.levelplot(x,y,z,...)
  panel.text(x, y,  M2[cbind(x,y)]) ## use handy matrix indexing
}

然后你得到你的结果:

levelplot(M1,panel=myPanel)

enter image description here

要定位整个事物,以便M1[1,1]位于左上角,就像您只是打印M1一样,这样做(请参阅布莱恩的评论):

M3 <- t(M1[nrow(M1):1,])
levelplot(M3, panel = myPanel)