correlationpsychr-corrplot

Assigning the result of corrplot to a variable


I am using the function corrplot from corrplot package to generate a plot of a correlation matrix created with cor.test (psych package). When I try to save the result into a variable, the variable is NULL.

Anyone could advice, please?

library(corrplot)
library(psych)
library(ggpubr)

data(iris)

res_pearson.c_setosa<-iris%>%
  filter(Species=="setosa")%>%
  select(Sepal.Length:Petal.Width)%>%
  corr.test(., y = NULL, use = "complete",method="pearson",adjust="bonferroni", alpha=.05,ci=TRUE,minlength=5)

corr.a<-corrplot(res_pearson.c_setosa$r[,1:3],
         type="lower", 
         order="original", 
         p.mat = res_pearson.c_setosa$p[,1:3], 
         sig.level = 0.05, 
         insig = "blank", 
         col=col4(10), 
         tl.pos = "ld",
         tl.cex = .8, 
         tl.srt=45, 
         tl.col = "black",
         cl.cex = .8)+
  my.theme #this is a theme() piece, but if I take this away, the result is a list rather than a plot

Solution

  • You can create your own function where you put recordPlot at the end to save the plot. After that you can save the output of the function in a variable. Here is a reproducible example:

    library(corrplot)
    library(psych)
    library(ggpubr)
    library(dplyr)
    
    data(iris)
    
    res_pearson.c_setosa<-iris%>%
      filter(Species=="setosa")%>%
      select(Sepal.Length:Petal.Width)%>%
      corr.test(., y = NULL, use = "complete",method="pearson",adjust="bonferroni", alpha=.05,ci=TRUE,minlength=5)
    
    your_function <- function(ff){
    corr.a<-corrplot(ff$r[,1:3],
                     type="lower", 
                     order="original", 
                     p.mat = ff$p[,1:3], 
                     sig.level = 0.05, 
                     insig = "blank", 
                     #col=col4(10), 
                     tl.pos = "ld",
                     tl.cex = .8, 
                     tl.srt=45, 
                     tl.col = "black",
                     cl.cex = .8)
      #my.theme #this is a theme() piece, but if I take this away, the result is a list rather than a plot
    recordPlot() # save the latest plot
    }
    your_function(res_pearson.c_setosa)
    
    p <- your_function(res_pearson.c_setosa)
    

    p
    

    Created on 2022-07-13 by the reprex package (v2.0.1)

    As you can see, the variable p outputs the plot.