使用 1 列制作 corrPlot 时,Color Legend 的宽度为 0

Color Legend has 0 width when making corrPlot with 1 column

我正在尝试用这样的一列和一列制作一个 corrPlot

library(corrplot)
mc <- cor(mtcars,mtcars["mpg"])
corrplot(mc, method = "circle")

但是当我这样做时,颜色图例没有像这样的宽度: 1columnCorrPlot

您可以在右侧看到图例的标签,但图例的颜色条只是 corrplot 右边框上的一条线。

我尝试使用 cl.ratio = 来调整它,但是当只有 1 列时我没有效果(当有多列时它确实有效果)。

有谁知道实现这个的方法吗?

谢谢,

格伦

查看可以使用 fix(corrplot) 执行的 corrplot 代码,您会注意到 cl.ratio 总是乘以变量 mm 来定义 xlim,例如xlim <- c(m1 - 0.5 - xlabwidth, m2 + 0.5 + mm * cl.ratio * (cl.pos == "r"))mm 通过以下方式计算:

m2 <- max(Pos[, 1])
m1 <- min(Pos[, 1])
mm <- m2 - m1

在第 1 列的情况下导致 mm=0。您可以通过将 corrplot 函数保存到另一个文件(例如 mycorrplot.r)并将函数命名为 mycorrplot() 来验证这一点。在 mm <- m2 - m1

之后添加这 3 行
cat("Before:",mm,"\n")
mm <- 1
cat("After:",mm,"\n")

本质上,将 mm=0 更改为 mm=1。完成后,执行:

source("mycorrplot.r")
mycorrplot(mc, method = "circle", cl.ratio=1)

这将允许 cl.ratio 修改图例的宽度。

这只是一个 hack,你应该让 corrplot 维护者知道这个问题。 [https://github.com/taiyun/corrplot]

另一种选择是绘制您自己的颜色图例:参见 how to place colorlegend (corrplot) in graphic

您好,感谢您的错误报告。 我刚刚在 Github 的问题跟踪器中关闭了这个问题: https://github.com/taiyun/corrplot/issues/19