R绘图 第十一篇:统计转换和位置调整(ggplo2)

统计转换和位置调整是ggplot2包中的重要概念,统计转换通常使用stat参数来引用,位置调整通常使用position参数来引用。

bin是分箱的意思,在统计学中,数据分箱是一种把多个连续值分割成多个区间的方法,每一个小区间叫做一个bin(bucket),这就意味着每个bin定义一个数值区间,连续值会落到相应的区间中。

一,统计转换图层

使用stat_函数可以减少图层的使用,从而引起对统计变换的注意,而不是视觉外观。

1,移除重复值

使用stat_unique()移除重复值:

stat_unique(mapping = NULL, data = NULL, geom = "point",
  position = "identity", ..., na.rm = FALSE, show.legend = NA,
  inherit.aes = TRUE)

参数注释:

  • geom:指定几何图层,默认值是point
  • position:位置调整,默认值是identity(不做位置调整)

使用unique的两种方式:

ggplot(dat, aes(x, y)) + geom_point(size=5,alpha=0.2,stat = "unique")
ggplot(dat, aes(x, y))+stat_unique(geom="point",size=5,alpha=0.2)

2,不改变数据

identity是对数据不做任何改变:

stat_identity(mapping = NULL, data = NULL, geom = "point",
  position = "identity", ..., show.legend = NA, inherit.aes = TRUE)

使用identity的两种方式:

stat="identity"
stat_identity()

3,计数

stat图层中有两种计数方式:

  • stat_count() :不需要分箱,计算每个x位置的数量,适用于离散或连续的x轴数据;
  • stat_bin():通过把x轴分箱并计算每个箱中的观测数量,适用于连续的x轴数据。

分箱计数转换默认的几何图形是bar,常用于直方图(geom_histogram(stat = "bin")中:

stat_bin(mapping = NULL, data = NULL, geom = "bar", position = "stack",
  ..., binwidth = NULL, bins = NULL, center = NULL, boundary = NULL,
  breaks = NULL, closed = c("right", "left"), pad = FALSE,
  na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

参数注释:

  • geom:指定几何图层;
  • bins:分箱的数量,默认值是30;
  • binwidth:分箱的宽度
  • breaks:数值向量,指定分箱的分割点
  • closed:有效值是right和left,用于指定分箱的区间是右边关闭,还是左边关闭。

计数转换的定义,默认值是条形图,常用于条形图(geom_bar(stat = "count"))中:

stat_count(mapping = NULL, data = NULL, geom = "bar",
  position = "stack", ..., width = NULL, na.rm = FALSE,
  show.legend = NA, inherit.aes = TRUE)

4,加和

stat_summary()用于在唯一的x值上求y值的加和,stat_summary_bin()用于对分箱的x值,求y值的加和。

stat_summary_bin(mapping = NULL, data = NULL, geom = "pointrange",
  position = "identity", ..., fun.data = NULL, fun.y = NULL,
  fun.ymax = NULL, fun.ymin = NULL, fun.args = list(), bins = 30,
  binwidth = NULL, breaks = NULL, na.rm = FALSE, show.legend = NA,
  inherit.aes = TRUE)

stat_summary(mapping = NULL, data = NULL, geom = "pointrange",
  position = "identity", ..., fun.data = NULL, fun.y = NULL,
  fun.ymax = NULL, fun.ymin = NULL, fun.args = list(), na.rm = FALSE,
  show.legend = NA, inherit.aes = TRUE)

5,椭圆转换

常用于散点图,把尽量多的散点包裹在椭圆中:

stat_ellipse(mapping = NULL, data = NULL, geom = "path",
  position = "identity", ..., type = "t", level = 0.95, segments = 51,
  na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

参数注释:

  • type :类型,默认值是t, 用于散点的t分布,norm 用于散点的正态分布,euclid绘制半径等于level的圆,
  • level:水平, 默认值是0.95,用于表示绘制椭圆的置信度,或者,如果type =“euclid”,则表示绘制圆的半径。
  • segments:绘制椭圆使用的段数量

二,位置调整图层

位置调整(Position adjustment)有多种实现方式:

  • identity:不调整
  • dodge:垂直方向不调整,只调整水平位置
  • dodge2:时dodge的特例,可以有变化的宽度
  • nudge:在一定的范围内调整水平和垂直位置
  • jitter:抖动,当具有离散位置和相对较少的点数时,抖动很有用
  • jitterdodge:同时jitter和 dodge
  • stack:堆叠
  • fill:填充,用于条形图

每个位置调整都对应一个函数position_xxx()。

1,不调整位置

position="identity"
position=position_identity()

2,dodge调整(避开)

dodge保留垂直方向,而调整水平方向。dodge2是dodge的特例,用于组织箱线图(box plot)、条形图(bar plot)和矩形图(rectangle),可以设置可变的宽度。

position_dodge(width = NULL, preserve = c("total", "single"))

position_dodge2(width = NULL, preserve = c("total", "single"),
  padding = 0.1, reverse = FALSE)

参数注释:

preserve:有效值是total和single,如果设置为total表示避开一个位置上的所有元素的总宽度,single表示避开一个位置上单个元素的宽度。

3,jitter调整(抖动)

在一定的范围内抖动调整,移动的位置是随机的:

position_jitter(width = NULL, height = NULL, seed = NA)

4,jitterdodge调整

该模式是dodge和jitter的组合,同时进行抖动和避开调整

position_jitterdodge(jitter.width = NULL, jitter.height = 0,
  dodge.width = 0.75, seed = NA)

5,nudge调整(移动)

 该模式把位置移动特定的距离,移动的距离是已知的:

position_nudge(x = 0, y = 0)

6,stack调整(堆叠)

用于条形图,堆叠调整是使多个条形图堆叠起来,而填充调整是每个条形图堆叠,并使其都具有相同的高度:

position_stack(vjust = 1, reverse = FALSE)
position_fill(vjust = 1, reverse = FALSE)

参考文档:

Layer: stats

Layer:Position adjustment

Data Binning and Plotting

HOW TO SUSS STATS IN GGPLOT2 IN R

猜你喜欢

转载自www.cnblogs.com/ljhdo/p/4806771.html
今日推荐