如何解决我如何使用 colnames 作为 chart.Correlation 的标签,如 corrplot
我喜欢 chart.Correlation 中的相关图,但对于多列,名称不可读,并且单个相关图中的值不再那么重要。那么有没有办法定义图表中的标签。与它们在 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() 的对齐方式
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,1))
r <- cor(x,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,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,...)
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 = ".",yaxt = 'n',xaxt = 'n',labels = "")
现实世界的例子:
解决方法
使用不同的包来创建绘图是可行的。 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())
产生你喜欢的 corrolationmatrix 和 corrplot 中的标签。 For a nice example also see this question
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。