




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ggplot2 笔记 7 定位 分面和坐标系 Positioning 7 1 简介本章主题是图形的定位 定位由四个部分组成 前 两个在前期讲过 而后两个部分在这章中会详细说到 位 置调整 调整每个图层中出现重叠的对象的位置位置标度 控制数据到图形的映射分面 在一个页面上自动摆放多个 图形 将数据分为多个子集 然后将每个子集依次绘制到 不同面板上坐标系 控制两个独立的位置标度形成一个二 维坐标系 如笛卡尔坐标系 7 2 分面每个小图都代表不同 的数据子集 分面可以快速地分析数据各子集模式的异同 本节讨论怎样较好微调分面 特别是和位置标度相关的方 法 facet null 默认 无分面 单一图形 face wrap 封装型 本质上是 1 维 为节省空间封装成二维 face grid 网格型 生成一个二维的面板由两个独立的部分组成 面 板的行和列可以通过变量来定义 facet wrap 使用这个参数 设置一长串面板二维排列 更加节省空间可以通过 ncol nrow as table dir 等参数设置排列 如下例 library ggplot2 从 mpg 数据集中取一个子集 mpg2mpg2 subset mpg cyl 5 drv in c 4 f class 2seater base ggplot mpg2 aes displ hwy geom blank xlab NULL ylab NULL base 添加分面 设置 ncol 或 nrow 二选一即 可 base facet wrap class ncol 3 设置 as tablebase facet wrap class ncol 3 as table FALSE as table 决定各 个分面的排列顺序 设置 dir 水平或垂直排列 base facet wrap class nrow 3 dir v facet grid 网格分面 在二维网格中展示图形 需要设定哪些变量作为分面绘图 的行 哪些变量作为列 中间用 短波浪线做标记 如下 例 mpg2 subset mpg cyl 5 drv in c 4 f class 2seater base ggplot mpg2 aes displ hwy geom blank xlab NULL ylab NULL 一行多列 base facet grid cyl 一列多 行 base facet grid drv 多行多列 base facet grid drv cyl 依次生成下列三种 控制标度 scales fixed x 和 y 的标度在所有分面中都相同 默认 scales free x x 的标度可变 y 固定 scales free y y 的标度可变 x 固定 scales free x 和 y 的标度都可变如下例 p ggplot mpg2 aes cty hwy geom abline geom jitter width 0 1 height 0 1 默认各个分面标度一 致 p facet wrap cyl 设置分面标度可变 p facet wrap cyl scales free 依次生成下图 固定标度可 以让我们在相同的基准上对子集进行比较自由标度可以帮 助我们看到更多细节在变量 y 单位 数量级不同时 单独 固定 x 轴 不限制 y 轴也很常用 如下例 经济数据集 economics long A tibble 2 870 x 4 date variable value value01 1 1967 07 01 pce 507 0 2 1967 08 01 pce 510 0 000266 3 1967 09 01 pce 516 0 000764 4 1967 10 01 pce 513 0 000472 5 1967 11 01 pce 518 0 000918 6 1967 12 01 pce 526 0 00158 7 1968 01 01 pce 532 0 00207 8 1968 02 01 pce 534 0 00230 9 1968 03 01 pce 545 0 00322 10 1968 04 01 pce 545 0 00319 with 2 860 more rows 按照不同的 variable 变量来分面 ggplot economics long aes date value geom line facet wrap variable scales free y ncol 1 注意 使用 facet grid 时有个限制 因为网格分面中 每列共用一个 x 轴 每行共用一个 y 轴 所以同列的分面 中必须有相同的 x 标度 同行的分面必须有相同的 y 标度 在 facet grid 中 有个参数叫 space 当 space free 时 每行的高度和该行的标度范围一致 这对分类标度很有用 如下例 其中 reorder 使得模型 model 和生产商 manufacturer 按城市油耗英里数 cty 重新排序 mpg2 subset mpg cyl 5 drv in c 4 f class 2seater mpg2 model reorder mpg2 model mpg2 cty mpg2 manufacturer reorder mpg2 manufacturer mpg2 cty ggplot mpg2 aes cty model geom point facet grid manufacturer scales free space free theme strip text y element text angle 0 下图为各种不同类型的小汽车的城市 油耗英里数的点数 缺失分面变量下面的例子中 我们设 置了俩数据框 df1 和 df2 其中 df1 中有分面变量 gender 而 df2 里没有这个变量 这是我们可以通过增加 df2 的图层 并且把它放在前面 要不就盖住 df1 的数据点 了 让 df2 中的数据出现在每个分面中 df1 data frame x 1 3 y 1 3 gender c f f m df2 data frame x 2 y 2 ggplot df1 aes x y 先写 df2 的 数据 设置个颜色和大小加以区分 geom point data df2 colour red size 5 这里默认的就是主函数中的映射 geom point facet wrap gender 分组和分面 Grouping vs Facetting 通过调整颜色 形状等图形属性可以来分组 分面则是另一种分组方法 这是两种绘图技巧 而根据子 集相对位置的不同 两种技巧各有优缺 在组间重叠严重 时 分面 每个组都在单独的面板中 相隔比较远 组间 无重叠 比较组间细微差别时 使用图形属性如下例 创 建一些随机数组 x y 然后我们先用 z 颜色分组 df data frame x rnorm 120 c 0 2 4 y rnorm 120 c 1 2 1 z letters 1 3 ggplot df aes x y geom point aes colour z 如果我们用 z 分面 ggplot df aes x y geom point facet wrap z 下面这个例子在 一幅图中既分面 还算出了每组的平均值 又标明了颜色 首先要先加载两个没用过的包 因为用到了其中的函数 我在网上看了两个小教程 大概了解一下他们是干啥的 magrittr 包 R 语言高效的管道操作 magrittr http blog fens me r magrittr dplyr 包 R 语言 数据处理利器 dplyr 简介 face p 4863001 html 安装后加载 library magrittr library dplyr library ggplot2 创建随机数的数据框 df df data frame x rnorm 120 c 0 2 4 y rnorm 120 c 1 2 1 z letters 1 3 创建新的数据框 df sum 这里用到一个管道操作符 摘抄一段相 关说明 magrittr 包被定义为一个高效的管道操作工具包 通过管道的连接方式 让数据或表达式的传递更高效 使 用操作符 可以直接把数据传递给下一个函数调 用或表达式 magrittr 包的主要目标有 2 个 第一是减少代 码开发时间 提高代码的可读性和维护性 第二是让你的 代码更短 再短 短短短 group by 用于对数据集按照给 定变量分组 返回分组后的数据集 对返回后的数据集使 用以上介绍的函数时 会自动的对分组数据操作 df sum df group by z summarise x mean x y mean y rename z2 z 生成均值数据 集 df sum A tibble 3 x 3 z2 x y 1 a 0 0875 0 9342 b 1 91 1 99 3 c 4 05 0 993 然后创建散点分面图 第一个图层是基本散点图 第 二个是通过数据处理后生成的均值数据集 并设置颜色等 图形属性 最后按照 z 分面 ggplot df aes x y geom point geom point data df sum aes colour z2 size 4 facet wrap z 生成图片 或者还有一种方法 就是把分面和颜色结合起来 还是上面的随机数数据集 df 用 dplyr 数据包中的 select 参数 选择子数据集 z 是指除去 z df data frame x rnorm 120 c 0 2 4 y rnorm 120 c 1 2 1 z letters 1 3 df2 dplyr select df z ggplot df aes x y geom point data df2 colour grey70 geom point aes colour z facet wrap z 出图 连续变量连续变量也可以用来分面 我们需要先给变量规定区间 转变成离散型 cut interval x n 把数据分割成 n 和相同长度的部分 cut width x width 按宽度分 cut number x n 10 将数据 划分为 n 个相同数目点的部分 每个分面上点数相同 x 代 表数据集 如下例 设置三种分面方法 library ggplot2 mpg2 subset mpg cyl 5 drv in c 4 f class 2seater Bins of width 1mpg2 disp w cut width mpg2 displ 1 Six bins of equal lengthmpg2 disp i cut interval mpg2 displ 6 Six bins containing equal numbers of pointsmpg2 disp n cut number mpg2 displ 6 plot ggplot mpg2 aes cty hwy geom point labs x NULL y NULL plot facet wrap disp w nrow 1 plot facet wrap disp i nrow 1 plot facet wrap disp n nrow 1 7 3 坐标系 Coordinate Systems 坐标系是将两种位置标度结合在一起的二维定位系统主要 有俩功能 将两个位置图形属性 位置 1 位置 2 例如 x y 结合起来在图形中形成二维方位系统配合方面 绘制坐 标轴和面板背景 标度控制坐标轴的数值 映射到图形上 的位置 然后通过坐标系将他们绘制出来 具体说来 可 以分为线性坐标系和非线性坐标系线性坐标系 coord cartesian 即默认笛卡尔坐标系 coord flip x 轴 y 轴互换后的笛卡尔坐标系 coord fixed 具有固定长宽比的 笛卡尔坐标系非线性坐标系 coord map coord quickmap 地图投影 coord polar 极坐标 coord trans 变换后的笛 卡尔坐标系 7 4 线性坐标系详细看看三种线性坐标系函数 怎么使用设定坐标轴取值范围 coord cartesian 函数有两个 重要的参数 xlim 和 ylim 用来设置 x y 轴的取值范围 有没有一种似曾相识的感觉 标度中的范围参数 参见笔 记 8 标度 6 5 和他相似度 90 以上 他不是也可以控制 图形外观吗 两者的不同之处在于范围参数的工作原理 当设定标度范围时 超出范围的参数就被删除了设定笛卡 尔坐标系范围时 我们使用的仍是所有的数据 只不过只 显示了其中的一小部分图形区域的数据而已 base ggplot mpg aes displ hwy geom point geom smooth Full datasetbase Scaling to 5 7 throws away data outside that rangebase scale x continuous limits c 5 7 base coord cartesian xlim c 5 7 翻转坐标轴如果你对 y 轴取值条件状态下的 x 值感兴趣 那我们可以通过使用 coord filp 调换坐标轴举个栗子 ggplot mpg aes displ cty geom point geom smooth Exchanging cty and displ rotates the plot 90 degrees but the smooth is fit to the rotated data ggplot mpg aes cty displ geom point geom smooth coord flip fits the smooth to the original data and then rotates the outputggplot mpg aes displ cty geom point geom smooth coord flip 固定两轴比 例 coord fixed 设置具有固定长宽比的笛卡尔坐标系 7 5 非线性坐标系与线性坐标不同 非线性坐标可以改变几何 形状 例如 在极坐标中 矩形可能会变成弧形 在地图 投影中 两点之间的最短路径不一定是直线 下面的代码 显示了在几个不同的坐标系中 如何渲染线条和矩形 coord polar 是极坐标函数 rect data frame x 50 y 50 line data frame x c 1 200 y c 100 1 base ggplot mapping aes x y geom tile data rect aes width 50 height 50 geom line data line xlab NULL ylab NULL basebase coord polar x base coord polar y 除了以上三种 还有如下三种 依次是翻转 变换和固定坐标系 base coord flip base coord trans y log10 base coord fixed 最后我们说说变换 transformation 坐标系变换分两步 首先 几何形状的 参数变化只根据定位而变 和维度无关 例如矩形 只能 先定位四个角再变换位置 将矩形转化为多边形 其次 将每个位置转化到新的坐标系中 点无所谓 但对于线和 多边形而言 就困难得多 因为新的坐标系中 直线不一 定就是直线了 所以我们假定坐标系之间的变换是连续的 把直线看做无数段极端的直线 而这些直线变换后已然是 直线 这个过程就是无限切割 然后再组合 即 munching 举个简单地栗子 首先来看两点线 df data frame r c 0 1 theta c 0 3 2 pi ggplot df aes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地产策划降薪方案(3篇)
- 老街旧房重建方案(3篇)
- DB23-T2943-2021-龙榛果园营建技术规程-黑龙江省
- 分公司属地化管理制度
- 培训学校相关管理制度
- 内部私人会所管理制度
- 出租公司内部管理制度
- 天桥施工安全方案(3篇)
- 全面预算报告管理制度
- 公路施工作业管理制度
- 中联重科质检部绩效考核指标
- 2024年郑州市高三二模(高中毕业年级第二次质量预测)文科综合试卷(含答案)
- 期中词性转换专练 2023-2024学年牛津上海版(试用本)八年级英语下册
- 北京市海淀区2023-2024学年九年级上学期期末练习英语试题
- FMECA方法及工程应用案例
- Premiere影视剪辑习题及答案
- 10kV配电室施工方案及技术措施
- 数据链系统与技术(第2版) 课件 第3、4章 Link-4、Link-11和Link-22数据链;Link-16数据链
- 联合协议书模板
- 猴痘防控工作方案
- 厂房租赁合同2
评论
0/150
提交评论