FigDraw 23. SCI文章中绘图二维散点图与统计图组合

点击关注,桓峰基因



桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下:

FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色

FigDraw 2. SCI 文章绘图必备 R 语言基础

FigDraw 3. SCI 文章绘图必备 R 数据转换

FigDraw 4. SCI 文章绘图之散点图 (Scatter)

FigDraw 5. SCI 文章绘图之柱状图 (Barplot)

FigDraw 6. SCI 文章绘图之箱线图 (Boxplot)

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)

FigDraw 8. SCI 文章绘图之饼图 (Pieplot)

FigDraw 9. SCI 文章绘图之韦恩图 (Vennplot)

FigDraw 10. SCI 文章绘图之直方图 (HistogramPlot)

FigDraw 11. SCI 文章绘图之小提琴图 (ViolinPlot)

FigDraw 12. SCI 文章绘图之相关性矩阵图(Correlation Matrix)

FigDraw 13. SCI 文章绘图之桑葚图及文章复现(Sankey)

FigDraw 14. SCI 文章绘图之和弦图及文章复现(Chord Diagram)

FigDraw 15. SCI 文章绘图之多组学圈图(OmicCircos)

FigDraw 16. SCI 文章绘图之树形图(Dendrogram)

FigDraw 17. SCI 文章绘图之主成分绘图(pca3d)

FigDraw 18. SCI 文章绘图之矩形树状图 (treemap)

FigDraw 19. SCI 文章中绘图之坡度图(Slope Chart)

FigDraw 20. SCI文章中绘图之马赛克图 (mosaic)

FigDraw 21. SCI文章中绘图之三维散点图 (plot3D)

FigDraw 22. SCI文章中绘图之核密度及山峦图 (ggridges)

前言

二维散点图与统计直方图,核密度估计图,箱线图,小提琴图组合实现。在分析数据时往往希望在一张图上可以展示出数据的统计图形,这时我们有多种办法可以实现。

软件包安装

目前有三个软件包可以实现此功能,包括 ggpubr,ggExtra,gridExtra,安装如下:

if(!require(ggpubr))
install.packages("ggpubr")
if(!require(ggExtra))
install.packages("ggExtra")
if(!require(gridExtra))
install.packages("gridExtra")

数据读取

我们这里使用iris数据集,有Species作为分组,如下:

data(iris)
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa

实例操作

1. ggscatterhist {ggpubr}

R中 ggpubr 包的 ggscatterhist()函数参数 margin.plot 有三种类型可供选择:

  1. 选择"density"参数绘制核密度估计图;

  2. 选择"histogram"参数绘制统计直方图;

  3. 选择""boxplot"参数绘制箱形图。

绘制核密度估计图

library(ggpubr)
# Basic scatter plot with marginal density plot
ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "#00AFBB", margin.params = list(fill = "lightgray"),
margin.plot = "density")

绘制统计直方图

ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "#00AFBB", margin.plot = "histogram")

绘制箱形图

ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "#00AFBB", margin.plot = "boxplot")

绘制分组核密度估计图

# Grouped data
ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", size = 3,
alpha = 0.6, palette = c("#00AFBB", "#E7B800", "#FC4E07"), margin.params = list(fill = "Species",
color = "black", size = 0.2))

绘制分组箱形图

# Use boxplot as marginal
ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", size = 3,
alpha = 0.6, palette = c("#00AFBB", "#E7B800", "#FC4E07"), margin.plot = "boxplot",
ggtheme = theme_bw())

绘制分组统计直方图

# Use histogram as marginal
ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", size = 3,
alpha = 0.6, palette = c("#00AFBB", "#E7B800", "#FC4E07"), margin.plot = "histogram",
ggtheme = theme_bw())

2. ggMarginal {ggExtra}

ggExtra包的ggMarginal()函数 type 有五种类型可供选择:

  1. 选择"density"参数绘制核密度估计图;

  2. 选择""histogram"参数绘制直方图;

  3. 选择""densigram"参数绘制统计直方图;

  4. 选择"boxplot"参数绘制箱形图;

  5. 选择"violin"参数绘制小提琴图。

library(ggExtra)
library(ggplot2)
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()
p

绘制核密度估计图

# Using density plot
ggMarginal(p, type = "density")

绘制直方图

# Using histogram plot
ggMarginal(p, type = "histogram")

绘制箱形图

# Using boxplot plot
ggMarginal(p, type = "boxplot")

绘制小提琴图

# Using violin plot
ggMarginal(p, type = "violin")

绘制统计直方图

# Using a 'densigram' plot
ggMarginal(p, type = "densigram")

绘制分组核密度估计图

# Using groupColour and groupFill In order to use either of these arguments, we
# must map 'colour' in the scatter plot to a factor or character variable

p <- ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Species)) + geom_point()
p
ggMarginal(p, groupColour = TRUE)

绘制绘制核密度估计图

ggMarginal(p, type = "density", groupColour = TRUE, groupFill = TRUE)

绘制分组直方图

ggMarginal(p, type = "histogram", groupColour = TRUE, groupFill = TRUE)

绘制分组小提琴图

ggMarginal(p, type = "violin", groupColour = TRUE, groupFill = TRUE)

绘制分组箱线图

ggMarginal(p, type = "boxplot", groupColour = TRUE, groupFill = TRUE)

绘制分组统计直方图

ggMarginal(p, type = "densigram", groupColour = TRUE, groupFill = TRUE)

3. grid.arrange {gridExtra}

gridExtra包的 grid.arrange()函数实现 ggplot2包绘制的散点图和统计直方图的组合。

library(gridExtra)
p1 <- qplot(Sepal.Length, Sepal.Width, data = iris)
p2 <- ggplot(iris, aes(Sepal.Length)) + geom_density() + xlab("")
p3 <- ggplot(iris, aes(Sepal.Width)) + geom_density() + coord_flip() + xlab("")
empty <- ggplot() + theme(panel.background = element_blank(), axis.title.x = element_blank(),
axis.title.y = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(),
axis.ticks = element_blank())

grid.arrange(p2, empty, p1, p3, ncol = 2, nrow = 2, widths = c(4, 1), heights = c(1,
4))

总结

这三种方法都可以实现二维散点图与统计直方图组合,其中以ggscatterhist()函数最为简单,grid.arrange()函数的可控性最好,也最为复杂。

软件包里面自带的例子,我这里都展示了一遍为了方便大家选择适合自己的图形,另外需要代码的将这期教程转发朋友圈,并配文“学生信,找桓峰基因,铸造成功的你!”即可获得!


References:

  1. baptiste Auguie. gridExtra documentation built on May 2, 2019, 9:12 a.m.

本文使用 文章同步助手 同步

你可能感兴趣的:(FigDraw 23. SCI文章中绘图二维散点图与统计图组合)