Home > other >  GGally: extract data from a plot
GGally: extract data from a plot

Time:04-15

I'd like to make a data frame that contains the summarized data (Variables and correlation values) used to generate the ggplot from GGally above.

library(ggplot2)
library(GGally)
data(flea)
p <- ggpairs(flea, columns = 2:4)
p.2.df <- ggplot_build(p)
Error in UseMethod("ggplot_build") : 
  no applicable method for 'ggplot_build' applied to an object of class "c('gg', 'ggmatrix')"

But unfortunately, the ggplot_build doesn't work. Please any help with it?

CodePudding user response:

You can get the data as a list of data frames, one from each sub-plot by doing:

result <- lapply(p$plots, function(x) ggplot_build(x$fn(p$data, x$mapping))$data)

so far example, the data frame for the first plot (a density curve) starts:

result[[1]]
#> [[1]]
#>                y        x      density     scaled   ndensity      count  n
#> 1   0.0045919002 122.0000 0.0045919002 0.31011213 0.31011213 0.33980062 74
#> 2   0.0046762616 122.2348 0.0046762616 0.31580944 0.31580944 0.34604336 74
#> 3   0.0047606795 122.4697 0.0047606795 0.32151057 0.32151057 0.35229028 74
#> 4   0.0048451404 122.7045 0.0048451404 0.32721460 0.32721460 0.35854039 74
#> 5   0.0049295633 122.9393 0.0049295633 0.33291607 0.33291607 0.36478768 74
#> 6   0.0050139632 123.1742 0.0050139632 0.33861598 0.33861598 0.37103327 74
#> 7   0.0050981826 123.4090 0.0050981826 0.34430371 0.34430371 0.37726551 74
#> 8   0.0051822881 123.6438 0.0051822881 0.34998373 0.34998373 0.38348932 74
#> 9   0.0052661612 123.8787 0.0052661612 0.35564807 0.35564807 0.38969593 74
#> 10  0.0053497430 124.1135 0.0053497430 0.36129274 0.36129274 0.39588098 74
#> 11  0.0054331166 124.3483 0.0054331166 0.36692333 0.36692333 0.40205062 74
#> 12  0.0055159428 124.5832 0.0055159428 0.37251697 0.37251697 0.40817977 74
#> 13  0.0055985890 124.8180 0.0055985890 0.37809845 0.37809845 0.41429558 74
#> 14  0.0056804992 125.0528 0.0056804992 0.38363022 0.38363022 0.42035694 74
#> 15  0.0057620771 125.2877 0.0057620771 0.38913955 0.38913955 0.42639371 74
#> 16  0.0058430226 125.5225 0.0058430226 0.39460618 0.39460618 0.43238367 74
#> 17  0.0059232982 125.7573 0.0059232982 0.40002755 0.40002755 0.43832407 74
#> 18  0.0060031239 125.9922 0.0060031239 0.40541855 0.40541855 0.44423117 74
#> 19  0.0060818643 126.2270 0.0060818643 0.41073625 0.41073625 0.45005796 74
#> 20  0.0061602651 126.4618 0.0061602651 0.41603102 0.41603102 0.45585962 74
...
etc

and the first correlation label is :

 result[[3]]
[[1]]
     x   y PANEL group  colour size angle hjust vjust alpha family fontface lineheight         label
1 50.5 182     1    -1 #717171 3.88     0   0.5   0.5    NA               1        1.2 Corr:\n-0.096

Created on 2022-04-14 by the reprex package (v2.0.1)

  • Related