Как сделать правильное положение заголовка R corplot?

Код и его вывод, где заголовок неправильно расположен за пределами страницы окна:

library('corrplot')

#options(error=recover) # http://stackoverflow.com/a/15031603/54964
#debugger()
# load("last.dump.rda"); debugger(last.dump) # run if fail
options(error=function() dump.frames(to.file=TRUE))

# http://www.sthda.com/english/wiki/visualize-correlation-matrix-using-correlogram
cor.mtest <- function(mat, ...) {
    mat <- as.matrix(mat)
    n <- ncol(mat)
    p.mat<- matrix(NA, n, n)
    diag(p.mat) <- 0
    for (i in 1:(n - 1)) {
        for (j in (i + 1):n) {
            tmp <- cor.test(mat[, i], mat[, j], ...)
            p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
        }
    }
  colnames(p.mat) <- rownames(p.mat) <- colnames(mat) 
  p.mat
}

M <- cor(mtcars)

p.mat <- cor.mtest(M)

title <- "ECG p-value significance"
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, method="color", col=col(200),  
     diag=FALSE, # tl.pos="d", 
         type="upper", order="hclust", 
     title=title, 
         addCoef.col = "black", # Add coefficient of correlation
         # Combine with significance
         p.mat = p.mat, sig.level = 0.05, insig = "blank" 
         # hide correlation coefficient on the principal diagonal
         )

Рис. 1 Выход

введите описание изображения здесь

R: 3.3.1
ОС: Debian 8.5
Связанный запрос: #72


person Léo Léopold Hertz 준영    schedule 09.11.2016    source источник


Ответы (1)


Код, где mar=c(0,0,1,0) исправляет ситуацию

library('corrplot')

# http://www.sthda.com/english/wiki/visualize-correlation-matrix-using-correlogram
cor.mtest <- function(mat, ...) {
    mat <- as.matrix(mat)
    n <- ncol(mat)
    p.mat<- matrix(NA, n, n)
    diag(p.mat) <- 0
    for (i in 1:(n - 1)) {
        for (j in (i + 1):n) {
            tmp <- cor.test(mat[, i], mat[, j], ...)
            p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
        }
    }
  colnames(p.mat) <- rownames(p.mat) <- colnames(mat) 
  p.mat
}

M <- cor(mtcars)

p.mat <- cor.mtest(M)

title <- "ECG p-value significance"
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, method="color", col=col(200),  
     diag=FALSE, # tl.pos="d", 
         type="upper", order="hclust", 
     title=title, 
         addCoef.col = "black", # Add coefficient of correlation
         # Combine with significance
         p.mat = p.mat, sig.level = 0.05, insig = "blank", 
         # hide correlation coefficient on the principal diagonal
     mar=c(0,0,1,0) # http://stackoverflow.com/a/14754408/54964
         )

Выход

введите описание изображения здесь

person Community    schedule 09.11.2016
comment
Можете ли вы объяснить, что означает mar=c(0,0,1,0)? - person helcode; 29.01.2019
comment
поля графика (для сторон), унаследованные от par: stat.ethz.ch/R-manual/R-devel/library/graphics/html/par.html - person mluerig; 04.03.2019
comment
Цитата из ссылки: числовой вектор формы c(нижний, левый, верхний, правый), который задает количество линий полей, которые должны быть указаны на четырех сторонах графика. По умолчанию с(5, 4, 4, 2) + 0,1. - person Poza; 23.03.2021