从零开始学R(六)——使用ggplot2的可视化简介
R的可视化——ggplot2
数据分析师或数据科学家花费大量精力去琢磨各种模型,对模型数据进行解读,但是在普通人眼里,这些数字是如此的繁杂,甚至有一些数据分析并不在意统计数字本身,而是在意它的显著性(Significance)。相比于文字来说,图片会给人的视觉带来更大的冲击力,因此,掌握R的可视化技巧,会让我们成为更加优秀的数据从业者。
这一节重点介绍R的ggplot2
package。R有基础的graphics
绘图package,也有后来发展起来的lattice
package。基础绘图包具有极高的自由度,像一张画布,可以任意绘制,lattice绘图包是基于基础绘图包的扩展,但是这二者相对来说需要大量的函数与参数记忆,对于初学者,或者是想轻易得到较为美观图片的小伙伴来说,这部分的操作有些烦琐。而ggplot2
包设定好了非常多的参数,极大地简化了绘图进程,生成的图片也非常漂亮,因此,我们这一节重点介绍R的ggplot2
package。
ggplot2简介
ggplot2
需要单独下载,由Hadley Wickham编写,他将这个包和其他的例如readr
,dplyr
,tibble
等pacakge打包整合到一个综合的package中,即tidyverse
,所以可以直接下载tidyverse
,避免再分别运行所有的package。
ggplot2的绘图类似于Photoshop,采用图层的形式一层一层叠加,不同的图层之间用+
相连,后面的图层在前一图层上方。
基本的语法结构
(1)ggplot(data, mapping)
这是底层绘图函数,data表示绘图用到的数据集,mapping表示映射,包括变量x和y,还有全局的颜色(color),大小(size)等。
(2)geom_XX()
这是基本的几何图层,不同的后缀可以绘制不同的图,比如geom_point()(散点图)、geom_bar()(柱状图)
(3)stat_XX()
这是统计变换,包括计数,百分比等
(4)图表美化部分
scale_XXX()是调整坐标轴和图标元素的度量,包括颜色、大小等
coord_XXX()是进行坐标变换,默认为笛卡尔坐标系(正交坐标系),还有极坐标系和地理空间坐标系等
facet_XXX()是分面系统,将某个变量进行分面变换,用分行、分列和网格的形式分类画图
guides()是图例调整
theme_XXX()是调整表格的主题样式,包括表格的背景、网格线等等。
图表类型
类型 | 函数 |
---|---|
连续型单变量 | geom_histogram()、geom_density()、 geom_dotplot()、geom_freqpoly()、geom_qq()、geom_area() |
离散型单变量 | geom_bar() |
连续型双变量 | geom_point()、geom_area()、geom_line()、geom_jitter()、geom_smooth()、geom_label()、geom_text()、geom_bin2d()、geom_hex()、geom_density2d()、geom_map()、geom_step()、geom_quantile()、geom_rug() |
离散型双变量 | geom_count() |
连续型/离散型 | geom_boxplot()、geom_violin()、geom_dotplot()、geom_col() |
连续型三变量 | geom_contour()、geom_raster()、geom_tile() |
视觉参数介绍
颜色
使用color
(点),col
(线)、colour
(填充区)和fill
(指定填充区)来调整图像的点、线、区域边框、区域内部以及其他图像的颜色。alpha
参数可以调整颜色的透明度,从0(完全不透明)到1(完全透明)
大小
size
参数可以调整点的大小和线的粗细,默认单位为pt
角度
angle
参数可以调整部分几何对象的角度,例如坐标轴标度的摆放角度等。
位置
vjust
参数可以调整垂直位置,0代表底部,0.5代表中部,1代表顶部;hjust
可以调整水平位置,0代表左侧,0.5代表中间,1代表右侧。
线条类型
linetype
参数可以指定线条类型,包括0-白线、1-实线、2-短虚线、3-点线、4-点横线、5-长虚线、6-短长虚线
点的形状
shape
参数可以调整点的形状,取值范围为[0,25]的整数,分别代表不同的形状。
结语
图像是为了让读者清晰地明白绘图者想要表达的意思,而不同的图像类型所能传递的信息精度是不同的。既有研究得出如下的信息精度传递顺序:
位置 > 长度 > 角度 > 方向 > 面积 > 体积 > 饱和度 > 色相 > 纹理 > 形状
不同的视觉组合对数据区分程度也不同
组合 | 区分程度 |
---|---|
位置+方向 | 无法 |
位置+方向+饱和度 | 较易 |
位置+方向+形状 | 容易 |
位置+方向+色相 | 容易 |
位置+方向+饱和度+形状 | 很容易 |
位置+方向+色相+形状 | 很容易 |
此外,其一是这一系列的分享仅仅是一个基础,这一节的参考书一整本都在讨论这个问题,我也不可能以这样的篇幅来完整的覆盖。当然如果有兴趣的朋友可以私下评论或者提问,我再做专门回答。其二,每个人的审美不同,我只能和大家分享如何去调整相应的参数,至于该选择什么,只能见仁见智。其三,我将在接下来对一些基本的绘图进行介绍,因此不在这里展示相关的绘图代码。
关于ggplot2,推荐Hadley Wickham的R for Data Science
*以上内容参考张杰:《R语言数据可视化之美:专业图表绘制指南(增强版)》,电子工业出版社2019年版,第33页。