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,它是一个可以在蜂窝数据 ...
随机推荐
- 【ARM】ARM程序规范
1.函数名单词之间用_隔开,每一个字母大写 Uart_Printf() //这个由三星的TEST风格延续下来,因此没有参数时,必须加void,否则ADS会编译报警 void Te ...
- linux下文件描述符的查看及分析
起因 近期在调试一个Android播放内核是遇到上层传递的是fd(file descriptor),但是在文件播放结束之后调用lseek却提示返回-1,errno=29(#define ESPIPE ...
- Quo JS多种触摸手势轻量级JavaScript库
http://www.uedsc.com/quo-js.html http://quojs.tapquo.com/
- python 发送邮件 带附件
# coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/5/26' # __Desc__ = 实现发送带有各种附件类型的邮件 ...
- Python3在指定路径下递归定位文件中出现的字符串
[本文出自天外归云的博客园] 脚本功能:在指定的路径下递归搜索,找出指定字符串在文件中出现的位置(行信息). 用到的python特性: 1. PEP 318 -- Decorators for Fun ...
- 【Python】TCP Socket的粘包和分包的处理
Reference: http://blog.csdn.net/yannanxiu/article/details/52096465 概述 在进行TCP Socket开发时,都需要处理数据包粘包和分包 ...
- php的变量引用与销毁机制
在php中,符号"&"表示引用. 1.看看不引用的情况是这样子: $a = "hello world";//定义一个变量,下面赋值给$b $b = $ ...
- python3.6使用mysql
因为MySQLdb不支持python3,需要导入pymysql 可以选择pip 安装pymysql,或者pycharm安装 [File] >> [settings] >> [P ...
- SecureCRT ,可是进入模拟器后TAB键还是无法补全
SecureCRT是做网络,路由,交换机等设备的人都知道的工具 ,可是进入模拟器后TAB键还是无法补全,就很懊恼了. 设置步骤: 1)打开SecureCRT软件,选项—全局选项—常规—默认的会话设置— ...
- sublime双击选择全选带中划线
// Characters that are considered to separate words "word_separators": "./\\()\" ...