ggExtra:为散点图添加边缘分布图(R语言)

ggExtra包可以为ggplot2对象的散点图,添加边缘的数据分布图,能分布图的类型有很多,例如,核密度图,箱线图,直方图。

如图所示,中间点的是ggplot2对象的散点图,上右两边的核密度图,分别对应了X轴和Y轴的数据分布情况。

函数解释:

ggMarginal(
  p,   # ggplot2对象
  type = c("density", "histogram", "boxplot", "violin", "densigram"),  # 边缘图的类型
  margins = c("both", "x", "y"),   # 在哪边绘制
  size = 5,                        # 主图形的大小
  ...,
  xparams = list(),                # 向X轴(上方)的边缘图,添加绘图的更多参数
  yparams = list(),
  groupColour = FALSE,             # 逻辑值,颜色是否分组
  groupFill = FALSE                # 逻辑值,填充是否分组
)

下面我们来看看具体是如何使用的吧

核密度图

# 代码来源:https://www.r2omics.cn/
library(ggplot2)
library(ggExtra)

# 先用ggplot2绘制一个普通的散点图
p <- ggplot(`iris`, aes_string('Sepal.Length', 'Sepal.Width')) +
  aes_string(colour = 'Species') +
  geom_point() + 
  theme_bw() +
  theme(legend.position = "bottom")

# 用ggExtra包中的ggMarginal函数绘制边缘分布图
ggMarginal(
  p,
  type = 'density',
  margins = 'both',
  size = 5,
  groupColour = TRUE,
  groupFill = TRUE
)

直方图

ggExtra::ggMarginal(
  p,
  type = 'histogram',
  margins = 'both',
  size = 5,
  groupColour = TRUE,
  groupFill = TRUE,
  xparams = list(bins=10)
)

箱线图

ggExtra::ggMarginal(
  p,
  type = 'boxplot',
  margins = 'both',
  size = 5,
  groupColour = TRUE,
  groupFill = TRUE,
  xparams = list(bins=10)
)

小提琴图

ggExtra::ggMarginal(
  p,
  type = 'violin',
  margins = 'both',
  size = 5,
  groupColour = TRUE,
  groupFill = TRUE,
  xparams = list(bins=10)
)

密度曲线图

ggExtra::ggMarginal(
  p,
  type = 'densigram',
  margins = 'both',
  size = 5,
  groupColour = TRUE,
  groupFill = TRUE,
  xparams = list(bins=10)
)