感谢关注天善智能,走好数据之路↑↑↑
欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者:李誉辉 四川大学在读研究生
往期精彩:
R_插值_拟合_回归_样条
R_circlize包_和弦图(一)
R_circlize包_和弦图(二)
1 ggplot2特点
采用图层的设计方式,有利于结构化思维
将表征数据和图形细节分开,能快速将图形表现出来,使创造性绘图更加容易,而不必纠结于图形的细节,细节可以后期慢慢调整
将常见的统计变换融入到了绘图中
有明确的起始(ggplot开始)与终止(一句话一个图层),图层之间的叠加是靠“+”实现的,越往后,其图层越在上方
图形美观,扩展包丰富,有专门调整字体和公式的包,有专门调整颜色的包,还有专门用按钮辅助调整主题的包,总之,应有尽有
2 ggplot2基本概念
Data数据, Mapping映射
Scale标度
Geometric几何对象
Statistics统计变换
Coordinate坐标系统
Layer图层
Facet分面
Legend图例
beautiful美化
3 ggplot2语法框架
绘图流程:
ggplot(data, aes(x = , y = )) + # 基础图层,不出现任何图形元素, geom_xxx()|stat_xxx() + # 几何图层或统计变换,出现图形元素 coord_xxx() + # 坐标变换,默认笛卡尔坐标系 scale_xxx() + # 标度调整,调整具体的标度 facet_xxx() + # 分面,将其中一个变量进行分面变换 guides() + # 图例调整 theme() # 主题系统
3.1 共性映射与个性映射
ggplot(data = NULL, mapping = aes())
geom_xxx(data = NULL, mapping = aes())
ggplot()
内有data、mapping两个参数
具有全局优先级,可以被之后的所有geom_xxx
对象或stat_xxx()
所继承(前提是geom
或stat
未指定相关参数)
而geom_xxx()
或stat_xxx()
内的参数属于局部参数,仅仅作用于内部
为了避免混乱,通常将共性映射的参数指定在ggplot(aes())
aes内部,将个性映射的参数指定在geom_xxx(aes())
或stat_xxx(aes())
内部
3.2 几何对象与统计变换
几何对象geom_xxx(stat = )
内有统计变换参数stat
,统计变换stat_xxx(geom = )
内也有几何对象参数geom
两种方法结果相同,几何对象更专注于结果,统计变换更专注于变换过程
library(ggplot2)# 用几何对象作图ggplot(data = NULL, mapping = aes(x = x, y = y)) + geom_point(color = "darked", stat = "identity") # identity 表示没有任何统计变换# 用统计变换作图ggplot(data = NULL, mapping = aes(x = x, y = y)) + stat_identity(color = "darked", geom = "point") # geom_point(stat = 'identity')与stat_identity(geom = 'point')结果一样
3.3 aes与data参数
aes参数用来指定要映射的变量,可以是多个变量,
data参数表示指定数据源,必须是data.frame格式,其坐标轴变量最好宽转长,只能指定一个x轴和y轴,多个x列或y列不能使用调整图例。
4 geom_xxx()
几何对象
常用的几种几何对象函数:
几何对象函数描述其它geom_point
点图geom_point(position = "jitter")
== geom_jitter()
避免重叠geom_line
折线图可以通过smooth参数平滑处理geom_bar
柱形图x轴是离散变量geom_area
面积图geom_histogram
直方图x轴数据是连续的geom_boxplot
箱线图geom_rect
二维长方形图geom_segment
线段图geom_path
几何路径由一组点按顺序连接geom_curve
曲线geom_abline
斜线有斜率和截距指定geom_hline
水平线常用于坐标轴绘制geom_vline
竖线常用于坐标轴绘制geom_text
文本
ggplot2唯一不支持的常规平面图形是雷达图
其它几何对象查询:
ggplot2 part of the tidyverse
ggplot2 Quick Reference: geom
也可以用
ls(pattern = '^geom_', env = as.environment('package:ggplot2'))
查询,但是没有图形示例
library(ggplot2)ls(pattern = "^geom_", env = as.environment("package:ggplot2"))
柱形图和散点图是关键,