ggpubr 是由 Alboukadel Kassambara 开发的一款非常优秀的基于ggplot2作图的可视化R包,一行命令即可简单方便的绘制出符合出版物要求的图形。

ggplot2 by Hadley Wickham is an excellent and flexible package for elegant data visualization in R. However the default generated plots requires some formatting before we can send them for publication. Furthermore, to customize a ggplot, the syntax is opaque and this raises the level of difficulty for researchers with no advanced R programming skills. The ‘ggpubr’ package provides some easy-to-use functions for creating and customizing ‘ggplot2’- based publication ready plots.

R包安装

  1. install.packages("ggpubr")
  2. library(ggpubr)
  3. # github安装
  4. if(!require(devtools)) install.packages("devtools")
  5. devtools::install_github("kassambara/ggpubr")
  6. library(ggpubr)

常用图形绘制

分布图绘制(Distribution)

  1. 带有均值线和地毯线的密度图
  1. #构建数据集set.seed(1234)
  2. df <- data.frame( sex=factor(rep(c("f", "M"), each=200)),
  3. weight=c(rnorm(200, 55), rnorm(200, 58)))
  4. # 预览数据格式
  5. head(df)
  1. ## sex weight
  2. ## 1 f 58.29504
  3. ## 2 f 53.92389
  4. ## 3 f 55.38073
  5. ## 4 f 53.90834
  6. ## 5 f 54.95872
  7. ## 6 f 55.28395
  1. # 绘制密度图
  2. # rug参数添加地毯线,add参数可以添加均值mean和中位数median,按性别”sex“分组标记边框线颜色和填充色,使用palette参数自定义颜色
  3. p1 <- ggdensity(df, x="weight", add = "mean", rug = TRUE, color = "sex",
  4. fill = "sex",palette = c("#00AFBB", "#E7B800"))
  5. p1

unnamed-chunk-3-1.png

  1. 带有均值线和边际地毯线的直方图
  1. p2 <- gghistogram(df, x="weight", add = "mean", rug = TRUE, color = "sex",
  2. fill = "sex",palette = c("#00AFBB", "#E7B800"))
  3. p2

unnamed-chunk-4-1.png

箱线/小提琴图绘制(barplot/violinplot)

  1. 箱线图+分组形状+统计
  1. data("mtcars")
  2. #jitter参数添加扰动点,点的形状shape由dose变量映射
  3. p3 <- ggboxplot(mtcars, x="cyl", y="drat", color = "cyl",
  4. palette = c("#00AFBB", "#E7B800", "#FC4E07"),
  5. add = "jitter", shape="cyl")
  6. p3

unnamed-chunk-5-1.png

  1. # stat_compare_means参数比较不同组之间的均值,并增加不同组间比较的p-value值,可以自定义需要标注的组间比较
  2. my_comparisons <- list(c("4", "6"), c("6", "8"), c("4", "8"))
  3. p4 <- p3 + stat_compare_means(comparisons = my_comparisons)+
  4. stat_compare_means(label.y = 6)
  5. p4

unnamed-chunk-6-1.png

  1. 内有箱线图的小提琴图+星标记
  1. # add = “boxplot”添加箱线图,stat_compare_means中设置lable=”p.signif”,即可添加星添加组间比较连线和统计P值按星分类add添加箱线图,label标注选择显著性标记(星号)
  2. p5 <- ggviolin(mtcars, x="cyl", y="drat", fill = "cyl",
  3. palette = c("#00AFBB", "#E7B800", "#FC4E07"),
  4. add = "boxplot", add.params = list(fill="white"))+
  5. stat_compare_means(comparisons = my_comparisons, label = "p.signif") +
  6. stat_compare_means(label.y = 6)
  7. p5

unnamed-chunk-7-1.png

条形/柱状图绘制(barplot)

  1. df2 <- mtcars
  2. # 设置因子变量
  3. df2$cyl <- factor(df2$cyl)
  4. df2$name <- rownames(df2) #添加一新列name
  5. head(df2[, c("name", "wt", "mpg", "cyl")])
  1. ## name wt mpg cyl
  2. ## Mazda RX4 Mazda RX4 2.620 21.0 6
  3. ## Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 6
  4. ## Datsun 710 Datsun 710 2.320 22.8 4
  5. ## Hornet 4 Drive Hornet 4 Drive 3.215 21.4 6
  6. ## Hornet Sportabout Hornet Sportabout 3.440 18.7 8
  7. ## Valiant Valiant 3.460 18.1 6
  1. # 颜色按nature配色方法(支持 ggsci包中的本色方案 ,如: “npg”, “aaas”, “lancet”, “jco”, “ucscgb”, “uchicago”, “simpsons” and “rickandmorty”)
  2. p6 <- ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white",
  3. palette = "npg", #杂志nature的配色
  4. sort.val = "desc", #降序排序
  5. sort.by.groups=FALSE, #不按组排序
  6. x.text.angle=60)
  7. p6

unnamed-chunk-8-1.png

  1. # 按组进行排序
  2. p7 <- ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white",
  3. palette = "aaas", #杂志Science的配色
  4. sort.val = "asc", #升序排序,区别于desc
  5. sort.by.groups=TRUE,x.text.angle=60) #按组排序 x.text.angl设置x轴标签旋转角度
  6. p7

unnamed-chunk-9-1.png

ƫ��ͼ����(Deviation graphs)

  1. df2$mpg_z <- (df2$mpg-mean(df2$mpg))/sd(df2$mpg)
  2. # 相当于Zscore标准化,减均值,除标准差
  3. df2$mpg_grp <- factor(ifelse(df2$mpg_z<0, "low", "high"), levels = c("low", "high"))
  4. #设置分组因子
  5. head(df2[, c("name", "wt", "mpg", "mpg_grp", "cyl")])
  1. ## name wt mpg mpg_grp cyl
  2. ## Mazda RX4 Mazda RX4 2.620 21.0 high 6
  3. ## Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 high 6
  4. ## Datsun 710 Datsun 710 2.320 22.8 high 4
  5. ## Hornet 4 Drive Hornet 4 Drive 3.215 21.4 high 6
  6. ## Hornet Sportabout Hornet Sportabout 3.440 18.7 low 8
  7. ## Valiant Valiant 3.460 18.1 low 6
  1. p8 <- ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white",
  2. palette = "jco", sort.val = "asc", sort.by.groups = FALSE,
  3. x.text.angle=60, ylab = "MPG z-score", xlab = FALSE)
  4. p8

unnamed-chunk-11-1.png

  1. # rotate设置x/y轴对换
  2. p9 <- ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white",
  3. palette = "jco", sort.val = "desc", sort.by.groups = FALSE,
  4. x.text.angle=90, ylab = "MPG z-score", xlab = FALSE,
  5. rotate=TRUE, ggtheme = theme_minimal())
  6. p9

unnamed-chunk-12-1.png

棒棒糖图绘制(Lollipop chart)

棒棒图代替条形图展示数据

  1. p10 <- ggdotchart(df2, x="name", y="mpg", color = "cyl",
  2. palette = c("#00AFBB", "#E7B800", "#FC4E07"),
  3. sorting = "ascending",
  4. add = "segments", ggtheme = theme_pubr())
  5. p10

unnamed-chunk-13-1.png

  1. # 设置其他参数, dot.size = 6调整糖的大小,添加label标签,设置字体样式和方向
  2. p11 <- ggdotchart(df2, x="name", y="mpg", color = "cyl",
  3. palette = c("#00AFBB", "#E7B800", "#FC4E07"),
  4. sorting = "descending", add = "segments", rotate = TRUE,
  5. group = "cyl", dot.size = 6,
  6. label = round(df2$mpg), font.label = list(color="white",
  7. size=9, vjust=0.5), ggtheme = theme_pubr())
  8. p11

unnamed-chunk-14-1.png

  1. #棒棒糖偏差图
  2. p12 <- ggdotchart(df2, x = "name", y = "mpg_z",
  3. color = "cyl", # Color by groups
  4. palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
  5. sorting = "descending", # Sort value in descending order
  6. add = "segments", # Add segments from y = 0 to dots
  7. add.params = list(color = "lightgray", size = 2), # Change segment color and size
  8. group = "cyl", # Order by groups
  9. dot.size = 6, # Large dot size
  10. label = round(df2$mpg_z,1), # Add mpg values as dot labels,设置一位小数
  11. font.label = list(color = "white", size = 9, vjust = 0.5), # Adjust label parameters
  12. ggtheme = theme_pubr()) +
  13. geom_hline(yintercept = 0, linetype = 2, color = "lightgray")
  14. p12

unnamed-chunk-15-1.png

Cleveland��ͼ����

  1. # theme_cleveland()主题可设置为Cleveland点图样式
  2. p13 <- ggdotchart(df2, x = "name", y = "mpg",
  3. color = "cyl", # Color by groups
  4. palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
  5. sorting = "descending", # Sort value in descending order
  6. rotate = TRUE, # Rotate vertically
  7. dot.size = 2, # Large dot size
  8. y.text.col = TRUE, # Color y text by groups
  9. ggtheme = theme_pubr()) +
  10. theme_cleveland() # Add dashed grids
  11. p13

unnamed-chunk-16-1.png

常用基本绘图函数及参数

基本绘图函数

  1. gghistogram Histogram plot #绘制直方图
  2. ggdensity Density plot #绘制密度图
  3. ggdotplot Dot plot #绘制点图
  4. ggdotchart Cleveland's Dot Plots #绘制Cleveland点图
  5. ggline Line plot #绘制线图
  6. ggbarplot Bar plot #绘制条形/柱状图
  7. ggerrorplot Visualizing Error #绘制误差棒图
  8. ggstripchart Stripcharts #绘制线带图
  9. ggboxplot Box plot #绘制箱线图
  10. ggviolin Violin plot #绘制小提琴图
  11. ggpie Pie chart #绘制饼图
  12. ggqqplot QQ Plots #绘制QQ图
  13. ggscatter Scatter plot #绘制散点图
  14. ggmaplot MA-plot from means and log fold changes #绘制M-A图
  15. ggpaired Plot Paired Data #绘制配对数据
  16. ggecdf Empirical cumulative density function #绘制经验累积密度分布图

基本参数

  1. ggtext Text #添加文本
  2. border Set ggplot Panel Border Line #设置画布边框线
  3. grids Add Grids to a ggplot #添加网格线
  4. font Change the Appearance of Titles and Axis Labels #设置字体类型
  5. bgcolor Change ggplot Panel Background Color #更改画布背景颜色
  6. background_image Add Background Image to ggplot2 #添加背景图片
  7. facet Facet a ggplot into Multiple Panels #设置分面
  8. ggpar Graphical parameters #添加画图参数
  9. ggparagraph Draw a Paragraph of Text #添加文本段落
  10. ggtexttable Draw a Textual Table #添加文本表格
  11. ggadd Add Summary Statistics or a Geom onto a ggplot #添加基本统计结果或其他几何图形
  12. ggarrange Arrange Multiple ggplots #排版多个图形
  13. annotate_figure Annotate Arranged Figure #添加注释信息
  14. gradient_color Set Gradient Color #设置连续型颜色
  15. xscale Change Axis Scale: log2, log10 and more #更改坐标轴的标度
  16. add_summary Add Summary Statistics onto a ggplot #添加基本统计结果
  17. set_palette Set Color Palette #设置画板颜色
  18. rotate Rotate a ggplot Horizontally #设置图形旋转
  19. rotate_axis_text Rotate Axes Text #旋转坐标轴文本
  20. stat_stars Add Stars to a Scatter Plot #添加散点图星标
  21. stat_cor Add Correlation Coefficients with P-values to a Scatter Plot #添加相关系数
  22. stat_compare_means Add Mean Comparison P-values to a ggplot #添加平均值比较的P值
  23. diff_express Differential gene expression analysis results #内置差异分析结果数据集
  24. ggexport Export ggplots # 导出图片
  25. theme_transparent Create a ggplot with Transparent Background #设置透明背景
  26. theme_pubr Publication ready theme #设置出版物主题