![](/img/trans.png)
[英]How can I create this chart.Correlation graph in R using the ggplot2 package?
[英]How do i use colnames as labels for chart.Correlation like in corrplot
我喜歡 chart.Correlation 中的 plot 的相關性,但是對於多個列,名稱不可讀,並且單個相關圖中的值不再那么重要。 那么有沒有辦法在圖表中定義標簽。與它們在 corrplot 中的相關性?
library(corrplot)
library(xts)
library(PerformanceAnalytics)
dat <- xts(matrix(rnorm(1000), ncol = 4), order.by = as.Date(1:250))
colnames(dat) <- c("Name1", "Name2", "Name3", "Name4")
cor <- cor(dat)
corrplot(cor, method = "number")
chart.Correlation(dat)
我得到了一些解決方案,但我堅持使用 mtext() 的 alignment
custom.chart.Correlation <- function (R, histogram = TRUE, method = c("pearson", "kendall",
"spearman"), ...)
{
x = checkData(R, method = "matrix")
if (missing(method))
method = method[1]
panel.cor <- function(x, y, digits = 2, prefix = "",
use = "pairwise.complete.obs", method = "pearson",
cex.cor = 1, ...) {
usr <- par("usr")
on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
r <- cor(x, y, use = use, method = method)
txt <- format(c(round(r,2), 0.123456789), digits = digits)[1]
txt <- paste(prefix, txt, sep = "")
if (missing(cex.cor))
cex.cor <- 0.8/strwidth(txt)
test <- cor.test(as.numeric(x), as.numeric(y), method = method)
# Signif <- symnum(test$p.value, corr = FALSE, na = FALSE,
# cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***",
# "**", "*", ".", " "))
#Create a function to generate a continuous color palette
rbPal <- colorRampPalette(c('red','blue'))
text(0.5, 0.5, txt, cex = cex.cor, col = rbPal(100)[as.numeric(abs(r)*100)])
# text(0.8, 0.8, Signif, cex = cex, col = 2)
}
f <- function(t) {
dnorm(t, mean = mean(x), sd = sd.xts(x))
}
dotargs <- list(...)
dotargs$method <- NULL
rm(method)
hist.panel = function(x, ... = NULL) {
par(new = TRUE)
hist(x, col = "light gray", probability = TRUE,
axes = FALSE, main = "", breaks = "FD")
lines(density(x, na.rm = TRUE), col = "red", lwd = 1)
rug(x)
}
if (histogram)
pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor,
diag.panel = hist.panel, ...)
else pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor, ...)
size = (par("usr")[2] - par("usr")[1])/1.08
start <- par("usr")[1] + 0.04*size
end <- par("usr")[2] - 0.04*size
at <- seq(0.04, 1-0.04, length.out = ncol(R)+2)
mtext(colnames(R), side = 3, at[2:ncol(R)+1] = at, cex = 0.5, las = 2)
}
custom.chart.Correlation(dat, pch = ".", cex.cor = 1, yaxt = 'n', xaxt = 'n', labels = "")
現實世界的例子:
可以使用不同的 package 創建 plot。 GGally
使用了很多ggplot
特性。
library(GGally)
lowerFn <- function(data, mapping, method = "lm", ...) {
p <- ggplot(data = data, mapping = mapping) +
geom_point(colour = "black") +
geom_smooth(method = method, color = "red", ...)
p
}
ggpairs(dat, lower=list(continuous = wrap(lowerFn, method = "lm")),
upper = list(continuous = "cor"),
diag=list(discrete= "barDiag"),
axisLabels='none') +
theme_bw() +
theme(strip.text = element_text(angle=90, hjust=1),
strip.background = element_rect(fill = NA),
strip.text.y = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
使用 corrplot 中的標簽生成您喜歡的 corrolationmatrix。 一個很好的例子也看到這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.