R corrplot colorlegend变化范围

yhqotfr8  于 2023-05-26  发布在  其他
关注(0)|答案(3)|浏览(198)

我尝试使用corrplot包在R中绘制相关矩阵。
我的问题是整个矩阵的最小和最大相关系数的范围是(-0.2,0.2)。我使用corrplot绘制矩阵,并使用自定义的colorRampPalette,例如

col1<-colorRampPalette(c('red','yellow','green','blue'))

对于图例的色图,我设置了col=col1(10)cl.lim=c(-0.2,0.2)
当我看到的情节,但是colorlegend出现从-0.2到0.2,但只有2种颜色,而不是我想要的是一个colorlegend与整个光谱的颜色在10箱的自定义调色板,但在范围(-0.2,0.2),而不是只有2种颜色,我将有10种颜色。

jdzmm42g

jdzmm42g1#

解决这个问题的方法是复制颜色范围,所以,得到后半部分...

mypal = jet.colors(1000) # jet.colors from library(matlab)

color = c(mypal,mypal)

corrplot(M, col=color)
y53ybaqx

y53ybaqx2#

我遇到了类似的问题,但大多数都有非常高的相关性。这使得在没有定义调色板中大量未使用的颜色的情况下很难区分不同的点。
我的解决方案是在绘图之前将我的相关性重新调整到范围(-1, 1)(这是corrplot假设的范围):

corrplot2 <- function(corr, col) {
    a = 2 / (max(corr) - min(corr))
    b = 1 - (2 / (1 - (min(corr) / max(corr))))
    y = a * corr + b
    corrplot(y, method="circle", bg="grey92", col=col, 
             order="hclust", addrect=4, cl.lim=c(-1, 1))
}

这样,整个值的分布可以再次很好地区分使用我选择的颜色col

xoshrz7s

xoshrz7s3#

我也有同样的问题。它可以通过将参数is.corr更改为FALSE来解决。

col <- colorRampPalette(brewer.pal(10, "Spectral"))(100)
corrplot(cor_matrix,
         method="color",
         col=col,
         is.corr = FALSE, #this is the parameter you were looking for
         col.lim = c(0,1)) #sets limits to the color legend

相关问题