Ввод значений ячеек из матрицы в график уровня, выполненный в решетке в r
Мне известна эта тема - Как отображать значения матрицы на Levelplot
и этот поток - Отображение значений данных на уровне графика в 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 ответ
Например, следуя первому вопросу, вы просто слегка его модифицируете, чтобы включить значения 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)