ggplot2基础(1)
ggplot2基础(1)
ggplot2基础(2)——坐标轴
ggplot2基础(3)——注释
ggplot2基础(4)——主题
ggplot2基础(5)——配色与图例
最近在学习用R语言来绘图,ggplot2自然是绕不过去的东东,原来之前学习过一些,但总也记不住(可能也是用得少),每次都要去上网搜索代码,为了解决这个问题吧,我觉得系统的学习是非常有必要的,于是认认真真的开始读
- 《R语言实战》
- 《R数据可视化手册》
- 《R语言数据可视化之美——专业图表绘制指南》
这几本书,这个系列就是我系统学习的笔记,所以都是结合自己的学习需求来记录的,所有的代码都来自于上面这几本书。
1. 基本的绘图函数
ggplot2中常见的绘图函数主要包括
- geom_col 绘制不需要统计计算的条形图
- geom_bar 绘制需要统计计算(比如求和)的条形图
- geom_boxplot 绘制箱线图
- geom_density 绘制密度图
- geom_hline 绘制水平线
- geom_jitter 绘制抖动点
- geom_line 线图
- geom_point 散点图
- geom_rug 地毯图
- geom_smooth 拟合曲线
- geom_text 文字注解
- geom_violin 提琴图
- geom_vline 绘制垂线
2. 绘图函数的常见参数
- color 对点、线和填充区域的边界进行着色
- fill 对填充区域的边界进行着色
- alpha 颜色的透明度
- linetype 线条类型
- size 点的尺寸和线的宽度
- shape 点的形状,相当于R中自带绘图中的pch
- position 对象的位置,例如:对于条形图而言,"dodge"表示将条形并排放置,"stacked"表示堆叠放置,"fill"表示堆叠放置且条形图等高(即以百分比显示)
- binwidth 直方图的宽度
- notch 方块图是否有缺口
- sides 地毯图的放置位置
- width 箱线图的宽度
3. 分组显示
分组显示是指通过形状、颜色、填充、尺寸和线类型等不同形式的视觉特征,在一张图中绘制不同类别(分组)的数据。在ggplot2中一般通过aes()
函数来实现,常用的属性(能够较为明显的区别出不同类别的数据)包括但不限于:
- color
- fill
- shape
# install.packages("carData")
# install.packages("car")
library(carData)
library(car)
data(Salaries, package="car")
library(ggplot2)
ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank, shape=sex)) +
geom_point()
4. 分面
分面是依据数据集中的1个或2个变量(每个变量代表一种分类)将数据划分为多个不同的子集,然后分别将每个子数据集绘制到页面的小图形面板中。常用的分面函数主要有两个:
- facet_wrap
- facet_grid 依据两个变量对数据进行划分
4.1 facet_wrap
facet_wrap
依据一个变量对数据进行划分,其基本语法为:
facet_wrap(~varname, params...)
其中varname为划分分组的变量名称,params代表其他绘图参数,常用的参数包括:
- nrow,ncol 子图的行数量和列数量,通常只设置一个即可
- scales 表示是否固定坐标轴刻度,
"fixed"
表示所有子图的坐标轴刻度范围是相同的,"free"
表示每个子图坐标轴刻度范围不固定,此外也可以设置为"free_x"
或"free_y"
- shrinks
- as.table
- drop 是否显示数据为空的分组,默认为TRUE,即不显示为空的数据分组
4.2 facet_grid
facet_grid
依据两个变量对数据进行划分,其基本语法为:
facet_wrap(xvar ~ yvar, params...)
在facet_grid
中,也可以只设置一个变量,此时则需要将另一个变量设置为.
使用分面绘图后的代码如下所示:
# install.packages("carData")
# install.packages("car")
library(carData)
library(car)
data(Salaries, package="car")
library(ggplot2)
ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank)) +
geom_point() +
facet_grid(sex~.)