R语言绘图系列:
- R语言可视化及作图1--基础绘图(par函数,散点图,盒形图,条形图,直方图)
- R语言可视化及作图2--低级绘图函数
- R语言可视化及作图3--图形颜色选取
- R语言可视化及作图4--qplot和ggplot2美学函数
ggplot2基本要素
- “+”和“%+%”
- 数据(data)和映射(mapping):想要可视化的数据(data)以及一系列将数据中的变量对应到图形属性的映射(mapping);ggplot2的数据(data)必须是一个数据框(dataframe)。
- 几何对象(geometric):几何对象(geom)代表你在图中实际看到的元素,如点、线、多边形等。
- 统计变换(statistics):统计变换(stat)是对数据进行的某种汇总。例如将数据分组计数以创建直方图,或将一个二维的关系用线性模型进行解释。统计变换是可选的,但通常非常有用。
- 标度(Scale):标度(scale)的作用是将数据的取值映射到图形空间,例如用颜色、大小或形状来表示不同的取值。展现标度的常见做法是绘制图例和坐标轴——它们实际上是从图形到数据的一个映射,使你可以从图形中读取原始的数据。标度包括位置、颜色、大小、形状、线型。
- 坐标系统(Coordinate):坐标系(coord)描述了数据是如何映射到图形所在的平面的,它同时提供了看图所需的坐标轴和网格线。我们通常使用的是笛卡尔坐标系,但也可以将其变换为其它类型,如极坐标和地图投影。
- 图层(Layer):图层的作用是生成在图像上可以被人感知的图形。一个图层由4部分组成:数据和图形属性映射;一种统计变换;一种几何对象;一种位置调整方式。
- 分面(Facet):分面(facet)描述了如何将数据分解为各个子集,以及如何对子集作图并联合进行展示。分面也叫作条件作图或网格作图。
其中各要素通过“+”以图层(layer)的方式来粘合构图(可以简单理解为要素/图层叠加符号);另外在ggplot2中,数据集必须为数据框(data.frame)格式,并且可以通过%+%符号调整已有数据集(ggplot2指导文档中明确写出“To override the data, you must use %+%”,也就是覆盖数据必须通过%+%)。
完整ggplot2绘图模板⚠️ :
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(
mapping = aes(<MAPPINGS>),
stat = <STAT>,
position = <POSITION>
)+ <COORDINATE_FUNCTION> + <FACET_FUNCTION>
几何对象汇总
几何对象 | 功能 | 属性 |
---|---|---|
abline | 绘制有斜率的直线 | color, linetype, size |
area | 绘制面积图 | color, fill, linetype, size,x,y |
bar | 绘制条形图 | color, fill, linetype, size, weight, x |
bin2d | 绘制二维热图 | color, fill, linetype, size, weight, xmax, ymax, xmin, ymin |
boxplot | 绘制盒形图 | color, fill, lower, middle, size, upper, weight, x, ymax, ymin |
contour | 绘制等高线图 | color, linetype, size, weight, x, y |
crossbar | 绘制盒子图(不是boxplot) | color, fill, linetype, size, x, y, ymax, ymin |
density | 绘制密度曲线 | color, fill, linetype, size, weight, x, y |
density2d | 二维等高密度曲线 | color, linetype, size, weight, x, y |
dotplot | 绘制点直方图 | color, fill, x, y |
errorbar | 绘制误差条 | color, linetype, size, weight, x, ymax, ymin |
errorbarh | 绘制水平误差条 | color, linetype, size, weight, x, ymax, ymin |
freqpoly | 绘制频率多边形 | color, linetype, size |
hex | 绘制六边形热图 | color, fill, size, x, y |
histogram | 绘制直方图 | color, fill, linetype, size, weight, x, y |
hline | 绘制水平线 | color, linetype, size |
vline | 绘制竖直线 | color, linetype, size |
jitter | 绘制扰动点图 | color, fill, shape, size, x, y |
lable | 绘制标签 | angle, color, hjust, label, size, vjust, x, y |
line | 绘制线条 | color, linetype, size, x, y |
linerange | 绘制区间线条 | color, linetype, size, x, ymax, ymin |
point | 绘制散点 | color, fill, shape, size, x, y |
pointrange | 绘制区间点竖线 | color, linetype, fill, shape, size, x, y, ymax, ymin |
polygon | 绘制多边形 | color, fill, linetype, size, x, y |
quantile | 添加分位数回归线 | color, linetype, size, weight, x, y |
raster | 绘制光栅图 | color, fill, linetype, size, x, y |
rect(tile) | 绘制矩形(瓦片图) | color, fill, linetype, size, xmax, xmin, ymax, ymin |
ribbon | 绘制色带图 | color, fill, linetype, size, x, ymax, ymin |
rug | 绘制边际地毯图 | color, linetype, size |
segment | 添加线段或箭头 | color, linetype, size, x, xend, y, yend |
smooth | 绘制平滑曲线 | color, alpha, fill, linetype, size, weight, x, y |
text | 添加文本 | angle, color, hjust, label, size, vjust, x, y |
violin | 绘制小提琴图 | weight, color, fill, size, linetype, x, y |
path | 绘制路线图 | color, linetype, size, x,y |
数据转换函数
绘制几何对象的各个函数中,数据转换函数均是以参数“stat”形式出现,但是也存在其他数据转换函数。
不同的几何对象,其默认的数据转换函数是有区别的,尤其是功能迥异的几个几何对象,比如geom_point()和geom_bar()。
ggplot2中常见的统计变换及其应用的场景总结:
统计变换 | 功能 | 应用场景 |
---|---|---|
abline | 绘制直线 | geom_abline() |
bin | 计算封箱数据,绘制直方图或者频率多边形 | geom_histogram();geom_freqpoly();stat_bin() |
bin2d | 计算矩形封箱内的观测值个数,绘制二维热图 | geom_bin2d();stat_bin_2d() |
bindot | 计算“点直方图”的封箱数据 | geom_dotplot() |
binhex | 计算六边形热图的封箱数据 | geom_hex();stat_bin_hex() |
boxplot | 计算箱线图的各个元素,绘制箱线图 | geom_bonplot();stat_boxplot() |
contour | 绘制三维等高线 | geom_contour();stat_contour() |
density | 一维密度估计,绘制密度曲线 | geom_density();stat_density() |
density2d | 二维密度估计,绘制二维密度线图 | geom_density2d();stat_density2d() |
function | 调用新函数进行统计变换 | stat_function() |
count | 对观测值进行计数 | geom_bar();stat_count() |
identity | 不对数据进行统计变换 | geom_area();geom_point();geom_errorbar() |
计算qq图指标,绘制qq图 | geom_qq();stat_qq() | |
quantile | 计算分位数 | geom_quantile();stat_quantile() |
smooth | 添加平滑曲线 | geom_smooth();stat_smooth() |