Как получить имя оси в img.matcor пакета CCA в R? - PullRequest
0 голосов
/ 15 января 2020

Я использую функцию img.matcor из пакета CCA для отображения изображений матриц корреляции внутри и между двумя матрицами данных. Но проблема в том, что он не предоставляет имена осей, такие как

library("CCA")
data(nutrimouse)
X=as.matrix(nutrimouse$gene)
Y=as.matrix(nutrimouse$lipid)
correl=matcor(X,Y)
img.matcor(correl)
img.matcor(correl,type=2)

enter image description here

Затем изменение исходного кода, например

img.matcor1 <- function (correl, type = 1) 
{
  matcorX = correl$Xcor
  matcorY = correl$Ycor
  matcorXY = correl$XYcor
  lX = ncol(matcorX)
  lY = ncol(matcorY)
  def.par <- par(no.readonly = TRUE)
  if (type == 1) {
    par(mfrow = c(1, 1), pty = "s")
    image(1:(lX + lY), 1:(lX + lY), t(matcorXY[nrow(matcorXY):1, 
                                               ]), zlim = c(-1, 1), main = "XY correlation", 
          col = tim.colors(64), axes = T, xlab = "", 
          ylab = "")
    box()
    abline(h = lY + 0.5, v = lX + 0.5, lwd = 2, lty = 2)
    image.plot(legend.only = TRUE, zlim = c(-1, 1), col = tim.colors(64), 
               horizontal = TRUE)
  }
  else {
    layout(matrix(c(1, 2, 3, 3, 0, 0), ncol = 2, nrow = 3, 
                  byrow = TRUE), widths = 1, heights = c(0.8, 1, 0.06))
    par(pty = "s", mar = c(2, 2, 2, 1))
    image(1:lX, 1:lX, t(matcorX[lX:1, ]), zlim = c(-1, 1), 
          main = "X correlation", axes = T, xlab = "", 
          ylab = "", col = tim.colors(64))
    box()
    image(1:lY, 1:lY, t(matcorY[lY:1, ]), zlim = c(-1, 1), 
          main = "Y correlation", col = tim.colors(64), 
          axes = T, xlab = "", ylab = "")
    box()
    partXY = matcorXY[lX:1, (lX + 1):(lX + lY)]
    if (lX > lY) {
      partXY = matcorXY[(lX + lY):(lX + 1), 1:lX]
      lX = ncol(matcorY)
      lY = ncol(matcorX)
    }
    par(pty = "m", mar = c(5, 4, 2, 3), mai = c(0.8, 
                                                0.5, 0.3, 0.4))
    image(1:lY, 1:lX, t(partXY), zlim = c(-1, 1), main = "Cross-correlation", 
          axes = T, xlab = "", ylab = "", col = tim.colors(64))
    box()
    image.plot(legend.only = TRUE, zlim = c(-1, 1), horizontal = TRUE, 
               col = tim.colors(64), legend.width = 2.5)
  }
  par(def.par)
}

img.matcor1(correl, type = 2)

enter image description here

дает мне имена тиков на осях в виде чисел. Но я хочу точные имена переменных. Как это получить? Любая помощь в этом отношении высоко ценится.

...