1

我知道这个线程 -如何在 Levelplot 上显示矩阵值

和这个线程 -在 R 中的 levelplot 上显示数据值

问类似的问题。但我不太明白如何使代码适应我正在尝试的内容。

我有一个矩阵(M1),我可以从中制作水平图。我想做的是将M1中每个“单元格”的相应值添加到levelplot中相应的“单元格”。我一直在尝试使用 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])
4

1 回答 1

3

例如,在第一个问题之后,您只需稍微修改它以包含 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)

在此处输入图像描述

要将整个东西定位M1[1,1]在左上角,就像你简单地打印M1一样,这样做(参见 Bryan 的评论):

M3 <- t(M1[nrow(M1):1,])
levelplot(M3, panel = myPanel)
于 2014-04-03T05:58:58.360 回答