我知道这个帖子 - 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])
答案 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)
要定位整个事物,以便M1[1,1]
位于左上角,就像您只是打印M1
一样,这样做(请参阅布莱恩的评论):
M3 <- t(M1[nrow(M1):1,])
levelplot(M3, panel = myPanel)