我怎样才能访问ggplot统计数据

时间:2015-03-20 13:51:23

标签: r ggplot2

我想知道是否可以以类似于基本图形的方式访问ggplot命令的结果。 对于基础图形中的boxplot,我可以访问$stats变量,该变量给出min,Q1,中位数等

bp <- plot(ToothGrowth$supp, ToothGrowth$len)
str(bp)
## List of 6
##  $ stats: num [1:5, 1:2] 8.2 15.2 22.7 25.8 30.9 4.2 11.2 16.5 23.3 33.9
##  $ n    : num [1:2] 30 30
##  $ conf : num [1:2, 1:2] 19.6 25.8 13 20
##  $ out  : num(0) 
##  $ group: num(0) 
##  $ names: chr [1:2] "OJ" "VC"

是否有类似的方法从ggplot2等效命令获取统计数据?我已经看了,但找不到任何关于此的文档。输出如下:

library(ggplot2)
ggp <- ggplot(ToothGrowth, aes(x=supp, y=len)) + geom_boxplot()
str(ggp)
## List of 9
##  $ data       :'data.frame': 60 obs. of  3 variables:
##   ..$ len : num [1:60] 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
##   ..$ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
##   ..$ dose: num [1:60] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
##  $ layers     :List of 1
##   ..$ :Classes 'proto', 'environment' <environment: 0xc6cffd0> 
##  $ scales     :Reference class 'Scales' [package "ggplot2"] with 1 fields
##   ..$ scales: list()
##  ..and 21 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 supp
##   ..$ y: symbol len
##  $ 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 "supp"
##  ..$ y: chr "len"
## - attr(*, "class")= chr [1:2] "gg" "ggplot"

1 个答案:

答案 0 :(得分:1)

ggplot2有一个方法来查看绘图是如何构建的。下面的命令可以帮助您找到所需内容。如果省略$ data,您将看到用于构建绘图的所有数据。

示例:

     p <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_boxplot()
     ggplot_build(p)$data