簡體   English   中英

如何設置R corrplot對角數字標簽?

[英]How to set R corrplot diagonal numeric labels?

我想在對角線上獲得標簽,如圖3所示,但在corrplot獲得如圖1-2所示的標簽。 我正在這里學習corrplot手冊以獲取數字對角線標簽。 我不知道有什么方法可以將數字標簽放在corrplot對角線上,因為我設法偽造了所有可能的選擇。 偽造的東西

  • 不能在函數cor.mtest的以下行設置數字對角線標簽

     colnames(p.mat) <- rownames(p.mat) <- colnames(mat) <- diag.labels 
  • colorlegend顯然不是這里的正確選擇

     corrplot(...) colorlegend(colbar = grey(1:100 / 100), labels=ids, addlabels = TRUE) 

很高興了解部分事實,但並不限制我們

  • diag=FALSE, tl.pos="d"用於單個單元格。 如何為N個單元格制作tl.pos="d" tl.pos=c("d")將導致錯誤。 --對角數字標簽需要tl.pos嗎?

這里的代碼也適用於不同的示例,其中包括KJJK的第一個答案的建議作為測試用例,但對於該任務而言,該建議是錯誤的

library("corrplot")

# http://www.sthda.com/english/wiki/visualize-correlation-matrix-using-correlogram
cor.mtest <- function(mat, diag.labels, ...) {
    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) <- diag.labels
  p.mat
}

ids <- c(seq(1,11))

M<-cor(mtcars)
p.mat <- cor.mtest(mtcars, diag.labels=ids)
corrplot(M, type="upper", order="hclust", diag=FALSE, # TODO tl.pos=c("d"),
         p.mat = p.mat, sig.level = 0.05)

圖1輸出在對角線上沒有預期標簽的圖,圖2偽造了KJJK的建議,在該圖中對對角標簽沒有影響,圖3在此處找到帶有corrgram的對角標簽示例

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

預期的輸出:對角線上的數字標簽,如圖3所示,但需要裝飾,如圖3所示(1-2)

偽造KJJK的建議

這里獲取代碼然后得到輸出,圖2中對角標簽沒有變化。

操作系統:Debian 8.5
R:3.3.1
開發商Github中的門票: #71

library("corrplot")

# http://rstudio-pubs-static.s3.amazonaws.com/6382_886fbab74fd5499ba455f11360f78de7.html
# plotcorr(R, col = colorRampPalette(c("#E08214", "white", "#8073AC"))(10), type = "lower")

# http://www.sthda.com/english/wiki/visualize-correlation-matrix-using-correlogram
# corrplot(M, type="upper", order="hclust", tl.col="black", tl.srt=45)

## Compute p-value of correlations
# mat : is a matrix of data
# ... : further arguments to pass to the native R cor.test function

M<-cor(mtcars)

# 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
}
# matrix of the p-value of the correlation
p.mat <- cor.mtest(mtcars)
head(p.mat[, 1:5])

corrplot(M, type="upper", order="hclust", 
  p.mat = p.mat, sig.level = 0.05)

# Leave blank on no significant coefficient
corrplot(M, type="upper", order="hclust", 
  p.mat = p.mat, sig.level = 0.01, insig = "blank")

col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, method="color", col=col(200),  
  type="upper", order="hclust", 
  addCoef.col = "black", # Add coefficient of correlation
  tl.col="black", tl.srt=45, #Text label color and rotation
  # Combine with significance
  p.mat = p.mat, sig.level = 0.01, insig = "blank", 
  # hide correlation coefficient on the principal diagonal
  diag=FALSE 
)

ids <- c(seq(1,11))
M<-cor(mtcars)
colnames(M)<-ids
rownames(M)<-c("I","told","you","row","names","controls","the","diag","labels","kj","jk")

corrplot(M, type="upper",p.mat = p.mat, sig.level = 0.05)

我得到的輸出: 產量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM