Масштабирование размера круга в функции R corrplot

Я уже какое-то время застрял на этой проблеме. Может, здесь кто-нибудь сможет мне помочь.

У меня есть три матрицы, похожие на корреляционную матрицу. mtxQ содержит значения "корреляции". mtxN содержит номер общего наблюдаемого набора значений. mtxP содержит соответствующие pvalue (пока предположим, что это pvalue cor.test).

       ### Exemplary dataset ###
df <- mtcars[, c(1,3:5)]
mtxQ <- round(cor(df)*100, 2)
mtxP <- round(cor.mtest(df)$p, 5)
colnames(mtxP) <- row.names(mtxP) <- row.names(mtxQ)
mtxN <- data.frame(mpg = c(100,80,15,5),
                  disp = c(80,145,6,4),
                  hp = c(15,6,20,5),
                  drat = c(5,4,5,5),
                  row.names = row.names(mtxQ))
mtxN <- as.matrix(mtxN)

require(corrplot)
require(RColorBrewer)

# for mtxQ 
corrplot(mtxQ, type = "upper", tl.col="black", tl.srt=35, diag = T, addgrid.col = NA, na.label = "nc",
         col = brewer.pal(n=10, name="RdYlBu"),
         method = "circle",
         #order = "hclust",
         title = "mtxQ with non sign. removed",
         hclust.method = "average",
         p.mat = mtxP, sig.level = .001, insig = "blank",
         is.corr = FALSE, cl.lim = c(-100, 100),
         mar=c(0,0,3,0)
)

Однако я хочу масштабировать размер кружков после log2(mtxN) такие значения:

       # for mtxN
mtx <- log2(mtxN)
corrplot(mtx, type = "upper", tl.col="black", tl.srt=35, diag = T, addgrid.col = NA, na.label = "nc",
         method = "circle",
         title = "mtxN with non sign. removed",
         hclust.method = "average",
         p.mat = mtxP, sig.level = .001, insig = "blank",
         is.corr = FALSE, cl.lim = c(floor(min(mtx)-.5),ceiling(max(mtx))),
         mar=c(0,0,3,0)
)

Как видите, это все еще не то, что я хотел. Как создать сюжет, в котором:

  1. цвет пузырей соответствует значениям в mtxQ
  2. размер пузырей соответствует log2(mtxN)
  3. значения mtxN отображаются в пузырьках
  4. результаты ниже определенного значения pvalue (mtxP) не отображаются на графике

Я не уверен, что это можно сделать с помощью corrplot(). Возможно, альтернативой может стать ggcorrplot. Но я тоже не мог этого понять.

Заранее большое спасибо:)

0 ответов

Другие вопросы по тегам