ggplot2学习笔记之构建图层
来源:互联网 发布:如何美化java做的界面 编辑:程序博客网 时间:2024/05/20 22:04
传统的画图函数(如plot、qplot)就好比在一张画布上画图,画好之后不能修改,而且只能使用一个数据集;而图层的思想是在多张透明的画布上绘图,再把这些画布按顺序叠加在一起形成一个完整的图形。每一张画布都可以使用不同数据集,可以单独对每一个图层进行修改,需要到哪些图层就画哪些图层。
1.创建绘图对象
在用 ggpot()绘制时,需先创建绘图对象,也就是第一个图层,它包含两个参数(数据与图形属性映射)。 这两个参数是绘制图形的默认参数,如果后面图层中没有重新设定新参数,那么它会自动调用绘图对象中的参数;如果重新设定了参数则不会使用默认的参数,参数在2.1 中有详细说明。
ggplot(data, aes(x, y, <other aesthetics>))
欢迎使用Markdown编辑器写博客
图层的作用是在图像上生成可以被人感知的对象。一个图层有4 个部分组成:
- 数据和图形属性映射;
- 一种统计变换;
- 一种几何对象;
- 一种位置调整方式。
图层的具体函数如下:
geom_XXX(mapping, data, …, stat, position)stat_XXX(mapping, data, …, geom, position)
- mapping(可选):一组图形属性映射,通过aes()函数来设定;
- data(可选):数据框。如果不设定该参数,则会调用绘图对象中的默认数据集。
- 注意:在绘图对象ggplot()与图层中,mapping 与data 的位置是相反的;
…:geom 或者 stat 的参数。可以是用图形属性作为参数,这样该属性就被设定
为固定的一个值,而不是被映射给数据集中的一个变量;geom 或stat(可选):我们可以修改geom 默认的stat 值,或者stat 默认的geom
值。它们是一组字符串,包含了将要使用的几何对象或者统计变换的名称。- position(可选):选择一种调整对象重合的方式。
2.1 数据与图层映射
- data 是数据集,数据类型必须是数据框,可选;
- aes()函数用来将数据变量映射到图形中,从而使变量成为可以被感知的图形属性;
- x、y 是映射到x、y 轴上的变量。
对于已经创建好的绘图对象,可以进行以下操作,以达到添加、修改、删除图形映射属性的效果。例如:
p <- ggplot(mtcars, aes(x=mpg,y=wt))
图层可以添加到 ggplot()与 qplot()创建的图形对象上。实际上 qplot()绘图原理是先创建绘图对象再添加图层,而相比于 ggplot(),只能针对于一个数据集。
图层之间用“+”连接,第一个图层是绘图对象,单独运行绘图对象是不会显示出图形的,必须加上图层才会显示。绘图对象可以储存到一个变量中,用 summary 函数可以查看绘图对象中参数的信息。
p <- ggplot(dsmall, aes(carat, price))p + geom_point()
在p + geom_point()中,geom 是几何对象,point 是点,表示要绘制散点图,括号里的参数都是缺省的,所以它调用了 p 中的默认参数。
p + geom_point() + geom_smooth()
ggplot(dsmall, aes(x = carat, y = price, colour = cut)) + geom_line()
除了可以将变量映射到图形属性中之外,也可以将图形属性设定为单一的值(如colour =‘red’)。
p <- ggplot(mtcars, aes(mpg, wt))p + geom_point(aes(colour = 'red'))
使用分组绘图,可以将数据按照某个变量分组并以相同的方式渲染。但是从绘制的图形中只能区分出不同个体,而不能识别出哪个个体。例如:在下列代码中,按变量cut分组绘制出出五条曲线,你虽然可以区别出五条不同曲线的属性特征,但你无法识别出那一条线属于变量cut 中哪一个值的。
ggplot(dsmall, aes(carat, price, group = cut)) + geom_line()
把变量cut 映射到colour 属性上,同样也能达到分组绘图的目的,并且生成一个图例,各条线都用不同颜色反映。
ggplot(dsmall, aes(carat, price, colour = cut)) + geom_line()
运用interaction()函数可以组合两个变量,同时对两个变量分组绘图。
ggplot(dsmall, aes(carat, price, group = interaction(cut, color))) + geom_line()
2.2 几何对象(geom)
默认的统计变换(stat)和图形属性
2.3 统计变换(stat)
统计变换,对数据进行统计变换,通常以某种方式对数据信息进行汇总。
统计变换会生成新的变量,这些新的变量可以被直接调用。例如,可以用 stat_bin 绘制直方图,实际上 stat_bin 统计变换会生成以下变量,并会被直接调用:
- count,每一组观测值数目;
- density,每组观测值的密度(占整体百分数/组宽);
- x,组的中心位置。
在以下代码中,第一个是默认调用了参数 count(可以省略不写),第二个调用了参数density。调用生成的新变量时必须用“..”包围起来,以便区分数据集的变量与新生成的变量。查看统计变换的帮助文档(如?stat_bin),可以知道统计变换新生成的变量以及其他信息。
ggplot(diamonds, aes(carat)) + stat_bin(binwidth = 0.1)
ggplot(diamonds, aes(carat)) + stat_bin(aes(y = ..density..), binwidth = 0.1)
2.4 位置调整(position)
所谓位置调整,即对图层元素位置进行微调。以下是ggplot2 中所有可用的位置调整参数。
在条形图中可以很好地解释不同类型的位置调整。以下是三种不同类型的代码:
ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar(position = 'stack')ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar(position = 'fill')ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar(position = 'dodge')
从左到右依次是堆叠(stacking)、填充(filling)、并列(dodging)
对于不同类型的图,需要合理选择适合的位置调整。例如:
同一调整(identity adjustment)不适用于条形图,因为最顶层图层会挡住下面的图层(下图左);而适用于线型图,因为线条不会存在相互遮挡的问题(下图右)。
代码分别如下:
ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar(position = 'identity')ggplot(diamonds, aes(clarity)) + geom_freqpoly(aes(group = cut, colour = cut))
- ggplot2学习笔记之构建图层
- ggplot2学习笔记之qplot
- ggplot2学习笔记之标度scale
- ggplot2学习笔记之位置标度
- ggplot2学习笔记之颜色标度
- ggplot2学习笔记之分面
- ggplot2学习笔记之颜色标度
- ggplot2 学习笔记
- ggplot2学习笔记之手动离散型标度
- ggplot2学习笔记-- 第四章
- ggplot2 1.1 图层属性(查询表)
- ggplot2-1.0 图层概念,图层属性
- 慕课—R语言之数据可视化—学习笔记 3.6ggplot2绘图系统
- 慕课—R语言之数据可视化—学习笔记 3.6ggplot2绘图系统(中)
- 慕课—R语言之数据可视化—学习笔记 3.6ggplot2绘图系统(下)
- ggplot2 学习
- ggplot2学习
- ggplot2作图详解5:图层语法和图形组合
- discuzX2.5 源码模板简介
- js实现图片上传预览
- LeetCode-Move Zeroes
- 关于自增自减运算符的一些问题
- 4.1链表二叉树
- ggplot2学习笔记之构建图层
- 设计模式——三工厂模式
- hdu2262 Where is the canteen
- ThinkPHP--RBAC为角色分配权限成功之收集表单信息
- 1425:sort
- 最小生成树--prim算法的c语言描述
- Python import机制 (十七)
- 细谈Struts2框架(二)Struts2框架之Scope属性
- 校招-中清龙图