作者:安建才
知乎:
https://www.zhihu.com/people/an-jian-cai-69/pins/posts
欢迎关注支持!
本文首发于作者知乎,
已获作者授权以原创形式发布!
原文链接戳文末【阅读原文】
ggplot2 包是 Hadly Wickham 开发(除 ggplot2 外,还有 plyr 和 reshape2 包)的一款通过 “+”,以图层叠加的搭配组合,易于实现数据可视化的 R 包。ggplot2 以美轮美奂的统计制图能力位居各类绘图软件排名前列,同时此包功能也在增加。此文简单介绍 ggplot2 的基本原理和操作,便于大家对 ggplot2 快速入门。
ggplot() 作为泛型函数(gplot() 能快速作图,却不是泛型函数),能对任意类型的 R 对象进行可视化操作,这是 ggplot2 的精髓所在。
在 Hadly 的 ggplot2 官方文档中,Hadely 这样对 Wilkinson 的图形语法进行了描述:“一张统计图形就是从数据到集合对象(geometric object, 缩写为 geom,包括点、线、条形等)的图形属性(aesthetic attributes, 缩写为 aes, 包括颜色、形状、大小等)的一个映射。此外,图形中还可能包含数据的统计变换(statistical transformation, 缩写为 stat),最后绘制在某个特定的坐标系(coordinate system, 缩写为 coord)中,而分面(facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。” 因此,在 ggplot2 中,图形语法中至少包括了如下几个图形部件:
1、 数据(data)
2、 映射(mapping)
3、 几何对象(geom)
4、 统计变换(stat)
5、 坐标系(coord)
6、 分面(facet)
7、 标度(scale)
这些组件之间用 “+”,以图层(layer)的方式来粘合构图的,所以图层是 ggplot2 中一个重要的概念;在掌握基本的图形部件基础上,要完成一幅高质量的统计绘图,仍然需要其他图形部件来进一步扩展,这包括了:
8、 主题(theme)
9、 位置(position)
10、存储和输出
接下来将对上述概念展开讲述
1、在 ggplot2 中,所接受的数据集必须为数据框(data.frame)格式。
如内置的 mtcars 数据集:head(mtcars)
2、这种数据框的格式好处是数据易于存储,也能保留原有的绘图参数下,用 %+% 方便地变更已有数据集。如:
library(ggplot2)
p
mtcarsc
3、 ggplot2 进行数据分组时必须根据行, 而不能根据列。 例如在 mtcars 的数据集中, 可以把汽车按汽缸数进行分组, 但不能按汽车的档位数和汽缸数这两个变量分为两组。这要求把 “宽” 数据转化为 “长” 数据。所谓的长数据是变量不在是放在各个列上, 而是排成一列, 每一个变量都分别占其中的几行, 这样就能方便的对每个变量进行分组。reshape2
融合
(melt)
和
重铸
(cast)
在数据框中的数据。如:
library(reshape2)
mtcarsm
1、 概念
aes() 函数是 ggplot2 中的映射函数, 所谓的映射即为数据集中的数据关联到相应的图形属性过程中一种对应关系, 如:
p1
p2
发现, 在 p2 中, 通过 aes() 指定了横纵坐标分别为 wt 和 hp、 颜色为 gear 这三种图形属性。 在 ggplot2 中不同的几何对象对应着不同的图形属性。
2、 设定和映射
映射
是将一个变量中离散或连续的数据与一个图形属性中以不同的参数来相互关联, 而
设定
能够将这个变量中所有的数据统一为一个图形属性。如:
p
3、
分组(group)
分组也是 ggplot2 种映射关系的一种, 默认情况下 ggplot2 把所有观测点分为了一组, 如果需要把观测点按额外的离散变量进行分组处理, 必须修改默认的分组设置。
p3
p4
几何对象
执行着图层的实际渲染, 控制着生成的图像类型。例如用 geom_point() 将会生成散点图, 而 geom_line 会生成折线图。几何对象如下:
具体应用如:
p
#更改颜色-连续变量
p + geom_point(aes(color = qsec))
#更改颜色-离散变量
p + geom_point(aes(color = factor(gear)))
#更改透明度
p + geom_point(aes(alpha = qsec))
#更改形状
p + geom_point(aes(shape = factor(gear)))
#更改点大小
p + geom_point(aes(size = qsec))
#两种颜色的叠加
p + geom_point(color = "grey50", size = 5) + geom_point(aes(color = qsec), size = 4)
#颜色和形状的叠加
p +geom_point(color = "grey50", size = 5) + geom_point(aes(shape = factor(gear)), size = 3)
统计变换
即对数据进行统计变化, 通常以某种方式对数据信息进行汇总, 例如通过 stat_smooth() 添加光滑曲线。统计对象如下:
每一个几何对象都有一个默认的统计变换
,
并且每一个统计变换都有一个默认的几何对象。正因如此
,
这一设定将会使绘图过程变的灵活多变。
具体应用如:
m
#取消默认的置信区间
m + stat_smooth(se = FALSE) + geom_point()
#更改置信区间和线条颜色
m + stat_smooth(fill = "red", size = 2, alpha = 0.5, color = "green") + geom_point()