Extracting calculated data from geom layers

804 views
Skip to first unread message

BHorn

unread,
Nov 3, 2012, 11:26:36 AM11/3/12
to ggp...@googlegroups.com
ggplot2 has calculations supporting some of the common ge0ms....like box plot, smooth, etc.  When I look at the data structure behind the graph objects (or layers), I cant seem to find and extract the results of the supporting calculations.  Meanwhile, its clear the newly created data is being preserved when I use ggsave().  How do I extract the boxplot data or the calculated results behind other geoms

Here is a simple example:

data(diamonds)
p <- qplot(color, price, data = diamonds, geom = "boxplot")   

I am guessing that the stat summary supporting the boxplot is revealed somewhere in the structure summary below...maybe in Classes 'proto', 'environment' <environment: 0x7fe9470b4f78>.  But its not clear to me how to access this environment or location.  Its nice to have the picture, but I also need the data.  Any help is appreciated.  

str(p)
List of 9
 $ data       :'data.frame': 53940 obs. of  10 variables:
  ..$ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
  ..$ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
  ..$ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
  ..$ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
  ..$ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
  ..$ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
  ..$ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
  ..$ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
  ..$ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
  ..$ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
 $ layers     :List of 1
  ..$ :Classes 'proto', 'environment' <environment: 0x7fe9470b4f78> 
 $ scales     :Reference class 'Scales' [package "ggplot2"] with 1 fields
  ..$ scales: list()
  ..and 20 methods, of which 9 are possibly relevant:
  ..  add, clone, find, get_scales, has_scale, initialize, input, n, non_position_scales
 $ mapping    :List of 2
  ..$ x: symbol color
  ..$ y: symbol price
 $ theme      : list()
 $ coordinates:List of 1
  ..$ limits:List of 2
  .. ..$ x: NULL
  .. ..$ y: NULL
  ..- attr(*, "class")= chr [1:2] "cartesian" "coord"
 $ facet      :List of 1
  ..$ shrink: logi TRUE
  ..- attr(*, "class")= chr [1:2] "null" "facet"
 $ plot_env   :<environment: R_GlobalEnv> 
 $ labels     :List of 2
  ..$ x: chr "color"
  ..$ y: chr "price"
 - attr(*, "class")= chr [1:2] "gg" "ggplot"



BHorn

unread,
Nov 3, 2012, 2:56:27 PM11/3/12
to ggp...@googlegroups.com
I received an email from Dennis Murphy with a clear answer.  

His input for visualizing and extracting layer data created by ggplot or geom functions was simple.  Use ggplot_build(p) to see a list with graph layer data.  

I was warned this function is experimental and may disappear.....  Hopefully, layer data extraction is preserved and made easy in the future (e.g. perhaps by preserving the function, creating a worthy alternative, or by expanding str() output).
Reply all
Reply to author
Forward
0 new messages