使用ggcorrplot

时间:2018-04-05 15:47:29

标签: r ggplot2 r-corrplot

我使用ggcorrplot包并使用以下代码创建了一个简单的相关矩阵:

library(ggcorrplot)
corr <- round(cor(data[,18:24], use = "complete.obs"),2)
gg <- ggcorrplot(corr)
print(gg)

我想要做的是现在使用相同的数据创建多个相关矩阵,但是通过名为&#34; region&#34;的分类变量将其分解出来。 (列位置&#39; 5&#39;):类似于使用facet_wrap函数。但是,当我尝试这样做时,我收到一个错误。我尝试过以下方法:

library(ggcorrplot)
corr <- round(cor(data[,18:24], use = "complete.obs"),2)
gg <- ggcorrplot(corr) +
facet_wrap("region", ncol = 2)
print(gg)

我得到的错误是"Error in combine_vars(data, params$plot_env, vars, drop = params$drop) : At least one layer must contain all variables used for facetting"

我理解&#39; corr&#39;没有引用&#34;区域&#34;田野,我想知道如何才能做到这一点。所以基本上,输出将是由&#34;区域&#34;分隔的6个相关矩阵。而不是只有一个相关矩阵的所有数据。

1 个答案:

答案 0 :(得分:0)

使用ggcorrplot可能无法做到这一点,ggplot将相关矩阵作为输入,并将其融合到一个合适的数据帧中,然后用于某些特定的ggcorrplot内容来制作图。< / p>

但是你可以使用(small_cor <- cor(replicate(2, rnorm(25)))) #> [,1] [,2] #> [1,] 1.00000000 0.06064063 #> [2,] 0.06064063 1.00000000 (reshape2::melt(small_cor)) #> Var1 Var2 value #> 1 1 1 1.00000000 #> 2 2 1 0.06064063 #> 3 1 2 0.06064063 #> 4 2 2 1.00000000 源代码来获得你想要的东西。

作为初步步骤,让我们看一下“融化”的相关矩阵。

library(tidyverse)
library(reshape2)

my_data <- data.frame(region = factor(rep(1:6, each = 25)),
                      replicate(7, rnorm(6*25)))

它是相关矩阵的数据框版本,其中每一行是来自原始数据的变量组合的相关性。

现在我们将开始使用一些示例数据。共有6个区域和7个变量。

my_cors <- cbind(region = factor(rep(levels(my_data$region), each = 7^2)),
              do.call(rbind, lapply(split(my_data, my_data$region), function(x) melt(cor(x[,-1])))))

我们需要融合的相关矩阵和区域ID。这就是我做到的。可能有更好的方式。我认为这可能是你必须要做的最棘手的事情。

ggcorrplot

现在我将从ggtheme = ggplot2::theme_minimal colors = c("blue", "white", "red") outline.color = "gray" legend.title = "Corr" tl.cex = 12 tl.srt = 45 源代码中复制并粘贴。首先,从参数列表中粘贴以获得一些默认值:

ggcorrplot

现在我剪切并粘贴facet_wrap的相关部分,并在最后粘贴my_cors %>% ggplot(aes(Var1, Var2, fill = value)) + geom_tile(color = outline.color) + scale_fill_gradient2(low = colors[1], high = colors[3], mid = colors[2], midpoint = 0, limit = c(-1, 1), space = "Lab", name = legend.title) + ggtheme() + theme(axis.text.x = element_text(angle = tl.srt, vjust = 1, size = tl.cex, hjust = 1), axis.text.y = ggplot2::element_text(size = tl.cex)) + coord_fixed() + facet_wrap("region", ncol=2) 以获得您想要的内容。

private void btnStartPython_Click(object sender, EventArgs e)
    {
        ScriptEngine engine = Python.CreateEngine();
         engine.ExecuteFile(@"C:\Users\matth\Desktop\testmctest.py");
    }

enter image description here