ggplot2 提取stat计算出来的数据
使用ggplot2 绘图时,我们只需要提供原始数据就可以了,ggplot2 内置了许多的计算函数,来帮助我们计算对应的数值。
最典型的的,当使用geom_boxplot 绘制箱线图时,我们只提供原始数据,用来绘图的最大值,最小值,中位数,上下四分位数都由ggplot2 自动计算。
那么我们如何提取这部分计算好的数据呢,以箱线图为例进行说明
绘图代码如下:
pdf("a.pdf")
p <- ggplot(mpg, aes(class, hwy)) + geom_boxplot()
temp <- print(p)
dev.off()
生成的图片如下:

在temp 这个对象中,就保存了计算好的用于绘制箱线图的数据
让我们来看下temp这个对象的结构
>str(temp)
List of 3
$ data :List of 1
..$ :'data.frame': 7 obs. of 22 variables:
.. ..$ ymin : num [1:7] 23 23 23 21 15 20 14
.. ..$ lower : num [1:7] 24 26 26 22 16 24.5 17
.. ..$ middle : num [1:7] 25 27 27 23 17 26 17.5
.. ..$ upper : num [1:7] 26 29 29 24 18 30.5 19
.. ..$ ymax : num [1:7] 26 33 32 24 20 36 22
.. ..$ outliers :List of 7
.. .. ..$ : num(0)
.. .. ..$ : num [1:4] 35 37 35 44
.. .. ..$ : num(0)
.. .. ..$ : num 17
.. .. ..$ : num [1:4] 12 12 12 22
.. .. ..$ : num [1:2] 44 41
.. .. ..$ : num [1:8] 12 12 25 24 27 25 26 23
.. ..$ notchupper: num [1:7] 26.4 27.7 27.7 24 17.6 ...
.. ..$ notchlower: num [1:7] 23.6 26.3 26.3 22 16.4 ...
.. ..$ x : num [1:7] 1 2 3 4 5 6 7
.. ..$ PANEL : int [1:7] 1 1 1 1 1 1 1
.. ..$ group : int [1:7] 1 2 3 4 5 6 7
.. ..$ ymin_final: num [1:7] 23 23 23 17 12 20 12
.. ..$ ymax_final: num [1:7] 26 44 32 24 22 44 27
.. ..$ xmin : num [1:7] 0.625 1.625 2.625 3.625 4.625 ...
.. ..$ xmax : num [1:7] 1.38 2.38 3.38 4.38 5.38 ...
.. ..$ weight : num [1:7] 1 1 1 1 1 1 1
.. ..$ colour : chr [1:7] "grey20" "grey20" "grey20" "grey20" ...
.. ..$ fill : chr [1:7] "white" "white" "white" "white" ...
.. ..$ size : num [1:7] 0.5 0.5 0.5 0.5 0.5 0.5 0.5
.. ..$ alpha : logi [1:7] NA NA NA NA NA NA ...
.. ..$ shape : num [1:7] 19 19 19 19 19 19 19
.. ..$ linetype : chr [1:7] "solid" "solid" "solid" "solid" ...
$ layout:Classes 'Layout', 'ggproto' <ggproto object: Class Layout>
facet: <ggproto object: Class FacetNull, Facet>
compute_layout: function
draw_back: function
draw_front: function
draw_labels: function
draw_panels: function
finish_data: function
init_scales: function
map: function
map_data: function
params: list
render_back: function
render_front: function
render_panels: function
setup_data: function
setup_params: function
shrink: TRUE
train: function
train_positions: function
train_scales: function
vars: function
super: <ggproto object: Class FacetNull, Facet>
finish_data: function
get_scales: function
map: function
map_position: function
panel_layout: data.frame
panel_ranges: list
panel_scales: list
render: function
render_labels: function
reset_scales: function
setup: function
train_position: function
train_ranges: function
xlabel: function
ylabel: function
super: <ggproto object: Class Layout>
$ plot :List of 9
..$ data :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 234 obs. of 11 variables:
.. ..$ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
.. ..$ model : chr [1:234] "a4" "a4" "a4" "a4" ...
.. ..$ displ : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
.. ..$ year : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
.. ..$ cyl : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
.. ..$ trans : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
.. ..$ drv : chr [1:234] "f" "f" "f" "f" ...
.. ..$ cty : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
.. ..$ hwy : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
.. ..$ fl : chr [1:234] "p" "p" "p" "p" ...
.. ..$ class : chr [1:234] "compact" "compact" "compact" "compact" ...
..$ layers :List of 1
.. ..$ :Classes 'LayerInstance', 'Layer', 'ggproto' <ggproto object: Class LayerInstance, Layer>
aes_params: list
compute_aesthetics: function
compute_geom_1: function
compute_geom_2: function
compute_position: function
compute_statistic: function
data: waiver
draw_geom: function
finish_statistics: function
geom: <ggproto object: Class GeomBoxplot, Geom>
aesthetics: function
default_aes: uneval
draw_group: function
draw_key: function
draw_layer: function
draw_panel: function
extra_params: na.rm
handle_na: function
non_missing_aes:
optional_aes:
parameters: function
required_aes: x lower upper middle ymin ymax
setup_data: function
use_defaults: function
super: <ggproto object: Class Geom>
geom_params: list
inherit.aes: TRUE
layer_data: function
mapping: NULL
map_statistic: function
position: <ggproto object: Class PositionDodge, Position>
compute_layer: function
compute_panel: function
required_aes: x
setup_data: function
setup_params: function
width: NULL
super: <ggproto object: Class Position>
print: function
show.legend: NA
stat: <ggproto object: Class StatBoxplot, Stat>
aesthetics: function
compute_group: function
compute_layer: function
compute_panel: function
default_aes: uneval
extra_params: na.rm
finish_layer: function
non_missing_aes: weight
parameters: function
required_aes: x y
retransform: TRUE
setup_data: function
setup_params: function
super: <ggproto object: Class Stat>
stat_params: list
subset: NULL
super: <ggproto object: Class Layer>
..$ scales :Classes 'ScalesList', 'ggproto' <ggproto object: Class ScalesList>
add: function
clone: function
find: function
get_scales: function
has_scale: function
input: function
n: function
non_position_scales: function
scales: list
super: <ggproto object: Class ScalesList>
..$ mapping :List of 2
.. ..$ x: symbol class
.. ..$ y: symbol hwy
..$ theme : list()
..$ coordinates:Classes 'CoordCartesian', 'Coord', 'ggproto' <ggproto object: Class CoordCartesian, Coord>
aspect: function
distance: function
expand: TRUE
is_linear: function
labels: function
limits: list
range: function
render_axis_h: function
render_axis_v: function
render_bg: function
render_fg: function
train: function
transform: function
super: <ggproto object: Class CoordCartesian, Coord>
..$ facet :Classes 'FacetNull', 'Facet', 'ggproto' <ggproto object: Class FacetNull, Facet>
compute_layout: function
draw_back: function
draw_front: function
draw_labels: function
draw_panels: function
finish_data: function
init_scales: function
map: function
map_data: function
params: list
render_back: function
render_front: function
render_panels: function
setup_data: function
setup_params: function
shrink: TRUE
train: function
train_positions: function
train_scales: function
vars: function
super: <ggproto object: Class FacetNull, Facet>
..$ plot_env :<environment: R_GlobalEnv>
..$ labels :List of 2
.. ..$ x: chr "class"
.. ..$ y: chr "hwy"
..- attr(*, "class")= chr [1:2] "gg" "ggplot"
从运行结果可以看到,temp这个对象由3个元素构成的列表,第一个元素data 代表绘图用的数据,第二个元素layout 代表了页面的布局,第三个元素plot 代表了图片中的各种属性
其中data 就是我们想要的那部分数据
> temp$data[[1]]
ymin lower middle upper ymax outliers notchupper
1 23 24.0 25.0 26.0 26 26.41319
2 23 26.0 27.0 29.0 33 35, 37, 35, 44 27.69140
3 23 26.0 27.0 29.0 32 27.74026
4 21 22.0 23.0 24.0 24 17 23.95278
5 15 16.0 17.0 18.0 20 12, 12, 12, 22 17.55009
6 20 24.5 26.0 30.5 36 44, 41 27.60241
7 14 17.0 17.5 19.0 22 12, 12, 25, 24, 27, 25, 26, 23 17.90132
notchlower x PANEL group ymin_final ymax_final xmin xmax weight colour
1 23.58681 1 1 1 23 26 0.625 1.375 1 grey20
2 26.30860 2 1 2 23 44 1.625 2.375 1 grey20
3 26.25974 3 1 3 23 32 2.625 3.375 1 grey20
4 22.04722 4 1 4 17 24 3.625 4.375 1 grey20
5 16.44991 5 1 5 12 22 4.625 5.375 1 grey20
6 24.39759 6 1 6 20 44 5.625 6.375 1 grey20
7 17.09868 7 1 7 12 27 6.625 7.375 1 grey20
fill size alpha shape linetype
1 white 0.5 NA 19 solid
2 white 0.5 NA 19 solid
3 white 0.5 NA 19 solid
4 white 0.5 NA 19 solid
5 white 0.5 NA 19 solid
6 white 0.5 NA 19 solid
7 white 0.5 NA 19 solid
temp$data 是一个只有一个元素的列表,这个元素是一个数据框,记录了每个箱体的具体数据,共有7行,对应图片中的7个箱子,数据框的每列给出了对应的ymin, lower, middle, upper, ymax 等值。
对于每一种geom图层,都可以采用上面的方式来提取中间数据。
ggplot2 提取stat计算出来的数据的更多相关文章
- Spark 介绍(基于内存计算的大数据并行计算框架)
Spark 介绍(基于内存计算的大数据并行计算框架) Hadoop与Spark 行业广泛使用Hadoop来分析他们的数据集.原因是Hadoop框架基于一个简单的编程模型(MapReduce),它支持 ...
- AI芯片:高性能卷积计算中的数据复用
随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片.卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中 ...
- Blazor和Vue对比学习(基础1.8):Blazor中实现计算属性和数据监听
1.7章<传递UI片断>,需要做几个案例,这部分暂停消化几天.我们先把基础部分相对简单的最后两章学习了. 计算属性和数据监听是Vue当中的概念,本质上都是监听数据的变化,然后做出响应.两者 ...
- Flink使用二次聚合实现TopN计算-乱序数据
一.背景说明: 在上篇文章实现了TopN计算,但是碰到迟到数据则会无法在当前窗口计算,需要对其中的键控状态优化 Flink使用二次聚合实现TopN计算 本次需求是对数据进行统计,要求每隔5秒,输出最近 ...
- 云计算OpenStack---云计算、大数据、人工智能(14)
一.互联网行业及云计算 在互联网时代,技术是推动社会发展的驱动,云计算则是一个包罗万象的技术栈集合,通过网络提供IAAS.PAAS.SAAS等资源,涵盖从数据中心底层的硬件设置到最上层客户的应用.给我 ...
- vue2.0 之计算属性和数据监听
计算属性computed <template> <div> <input type="text" name="" v-model= ...
- 如何解读「量子计算应对大数据挑战:中国科大首次实现量子机器学习算法」?——是KNN算法吗?
作者:知乎用户链接:https://www.zhihu.com/question/29187952/answer/48519630 我居然今天才看到这个问题,天……本专业,有幸听过他们这个实验的组会来 ...
- memorization-根据输入重新计算render的数据
在实际开发过程中,经常遇到根据props和state变化,重新计算“渲染阶段”需要的数据的情况. 如:根据输入的值实时过滤select列表,或者表格数据(查询过滤). 问题特点: 1. 每次渲染都会调 ...
- 我的翻译--GSMem:通过GSM频率从被物理隔离的计算机上窃取数据
抽象概念 AG网络是指在物理上与公共互联网断开的网络.虽然近几年人们验证了入侵这类网络系统的可行性,但是从这种网络上获取数据仍然是一个有挑战的任务.在本文中,我们介绍GSMem,它是一个可以在蜂窝数据 ...
随机推荐
- golang初始化结构体数组
最近组里新项目要求用go来写,没办法只能边看文档边写代码,今天遇到郁闷的问题,查了好久最终发现居然是一个标点符号的导致的,遂纪录之 刚刚给一个接口写单元测试时想初始化一个结构体数组,然后遍历该数组并建 ...
- 11g等待事件之library cache: mutex X
11g等待事件之library cache: mutex X 作者: dbafree 日期: 2012 年 07 月 01 日发表评论 (0)查看评论 library cache: mutex X ...
- Leetcode: Remove Duplicates from Sorted List II 解题报告
Remove Duplicates from Sorted List II Given a sorted linked list, delete all nodes that have duplica ...
- 数据挖掘算法之-关联规则挖掘(Association Rule)
在数据挖掘的知识模式中,关联规则模式是比较重要的一种.关联规则的概念由Agrawal.Imielinski.Swami 提出,是数据中一种简单但很实用的规则.关联规则模式属于描述型模式,发现关联规则的 ...
- ubuntu下上传本地代码到github
在github上有两种方法上传代码,一种是通过https,一种是通过SSH,这篇主要分享的是通过https的方法上传 首先,将你项目的所有代码放在一个文件夹中,然后在github上创建一个新的仓库 然 ...
- keepalived+nginx双机热备+负载均衡
Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...
- CentOS环境PHP安装memcache扩展
安装memcache yum install memcached 安装libmemcached库 yum install libmemcached PHP安装Memcache扩展 root@blog. ...
- iOSUIPickerView使用
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIPickerViewDelegate,U ...
- hbase的写和读,大合并和小合并
Hbase写: 客户端向hbase服务器端发送写的请求时,hbase会同时进行两个动作,把记录写在WAL(write ahead log)日志文件中,每台服务器所有表都共享这个WAL文件.然后会写到m ...
- 【.Net】exe加密/加壳工具.Net Reactor
用WPF开发的桌面应用,编译后得到的项目启动项exe文件是未加密的,使用ILSpy等反编译工具能够直接看到该exe内的文件源码! 如下图: 可以使用.Net Reactor(有破/解版)等工具对exe ...