ggplot2学习(一)

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()
image.png

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~.)
image.png

你可能感兴趣的:(ggplot2学习(一))