ggpubr包:生成可出版的图形
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。

阅读完本文后,你可以知道:
1ggpubr包可以做什么
2ggpubr包如何美化图形
ggpubr包在R语言ggplot2可视化包的基础上,设计和实现一些好用的函数,可以帮助使用者快速而高效地生成可用于出版的图形。
ggpubr包可以很方便地对图形做美化,让你的图形迅速上升档次。
ggpar函数对ggplot2包做的图形可以从这些方面做美化和提升操作。
-
标题,坐标轴的标签和图例的标题
-
图例的位置和展示方式
-
颜色
-
坐标轴的范围
-
坐标轴的转换:log2和sqrt
-
坐标轴的刻度
-
主题设置
-
图形的旋转
ggpubr包做可视化分析,示范如下。
第一步:加载ggpubr包
library(pacman)
p_load(ggpubr)
第二步:加载数据集
使用R语言自带的数据集ToothGrowth和mtcars。
data("ToothGrowth")
data("mtcars")
第三步:数据集检视
head(ToothGrowth)
head(mtcars)
第四步:所数据可视化
4.1 基本图形生成,盒箱图
p <- ggboxplot(ToothGrowth, x = 'dose', y = 'len', color = 'dose')
p
4.2 添加边框线
p + border('black')
4.3 修改标题和坐标轴的标签
p2 <- ggpar(
p,
title = "利用ggpubr包创建盒箱图",
subtitle = "Length ~ Dose",
caption = "Soruce: ggpurb",
xlab = "Dose(mg)",
ylab = "Teeth length",
legend.title = "Dose(mg)"
)
p2
4.4 主标题和副标题居中
p2 + theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
4.5 修改标题和标签字体的格式,颜色,大小
p3 <- ggpar(
p2,
font.title = c(14, "bold.italic", "red"),
font.subtitle = c(10, "orange"),
font.caption = c(10, "orange"),
font.x = c(14, "blue"),
font.y = c(14, "#993333")
)
p3 + theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))
4.6 修改图例的位置和显示
ggpar(p,
legend = "right", legend.title = "Dose (mg)") +
font("legend.title", color = "blue", face = "bold")+
font("legend.text", color = "red")
4.7 颜色设置
ggpar(p, palette = "npg") # 来自ggsci package
4.8 修改坐标轴的范围
ggpar(p, ylim = c(0, 50))
4.9 坐标轴的转换
ggpar(p, yscale = "log2", format.scale = TRUE)
4.10 控制坐标轴的文字
p +
font("xy.text", size = 12, color = "blue", face = "bold") +
rotate_x_text(45)+
rotate_y_text(45)
4.11 主题设置
p + theme_gray()
4.12 图形旋转
p + rotate()
附录:完整参考代码
library(pacman)
p_load(ggpubr)
#基于ggpubr包里面的函数
#ggpar函数对ggplot2包做的图形
#进一步美化,满足可出版的要求
#可美化的角度
#标题,坐标轴标签,图例的标题
#图例的位置和展示
#颜色
#坐标轴的范围
#坐标轴的转换:log和sqrt
#坐标轴的刻度
#主题设置
#图形旋转
# 数据集
ToothGrowth
# 数据集加载
data("ToothGrowth")
data("mtcars")
head(ToothGrowth)
head(mtcars)
# 基础图形
p <- ggboxplot(ToothGrowth, x = 'dose', y = 'len', color = 'dose')
p
# 添加网格线
p + grids(linetype = 'dashed')
# 添加边框线
p + border('black')
# 修改背景颜色
p + bgcolor('#BFD5E3') +
border('black')
# 修改标题和轴的标签
p2 <- ggpar(
p,
title = "利用ggpubr包创建盒箱图",
subtitle = "Length ~ Dose",
caption = "Soruce: ggpurb",
xlab = "Dose(mg)",
ylab = "Teeth length",
legend.title = "Dose(mg)"
)
p2
# 主标题和副标题居中处理
p2 + theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))
# 修改标题和标签的字体和颜色
p3 <- ggpar(
p2,
font.title = c(14, "bold.italic", "red"),
font.subtitle = c(10, "orange"),
font.caption = c(10, "orange"),
font.x = c(14, "blue"),
font.y = c(14, "#993333")
)
p3 + theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))
# 或者使用
# font函数
p2 +
font("title", size = 14, color = "red", face = "bold.italic")+
font("subtitle", size = 10, color = "orange")+
font("caption", size = 10, color = "orange")+
font("xlab", size = 12, color = "blue")+
font("ylab", size = 12, color = "#993333")
ggpar(p, title = "Plot of length n by dose",
xlab ="Dose (mg)", ylab = "Teeth length",
legend.title = "Dose (mg)",
font.title = c(14,"bold.italic", "red"),
font.x = c(14, "bold", "#2E9FDF"),
font.y = c(14, "bold", "#E7B800"))
# 修改图例的位置和显示
ggpar(p,
legend = "right", legend.title = "Dose (mg)") +
font("legend.title", color = "blue", face = "bold")+
font("legend.text", color = "red")
# 颜色设置
ggpar(p, palette = c("#00AFBB", "#E7B800", "#FC4E07"))
ggpar(p, palette = "Dark2")
ggpar(p, palette = "grey")
ggpar(p, palette = "npg") # 来自ggsci package
p + color_palette("jco")
p + color_palette(c("#00AFBB", "#E7B800", "#FC4E07"))
p4 <- ggscatter(mtcars, x = "wt", y = "mpg", color = "mpg",
size = 2)
p4
p4 + gradient_color("red")
p4 + gradient_color(c("blue", "red"))
p4 + gradient_color(c("blue", "white", "red"))
p4 + gradient_color("RdYlBu") # Use RColorBrewer palette
p5 <- ggscatter(mtcars, x = "wt", y = "mpg", fill = "mpg",
size = 4, shape = 21)
p5 + gradient_fill(c("blue", "white", "red"))
# 修改x的范围和缩放
ggpar(p, ylim = c(0, 50))
ggpar(p, yscale = "log2")
ggpar(p, yscale = "log2", format.scale = TRUE)
p + yscale("log2", .format = TRUE)
# 定义坐标轴的文字和刻度
p +
font("xy.text", size = 12, color = "blue", face = "bold") +
rotate_x_text(45)+
rotate_y_text(45)
# remove ticks and axis texts
p + rremove("ticks")+
rremove("axis.text")
# 旋转图形
p + rotate()
# 修改主题
# Gray主题
p + theme_gray()
# Black 和 White主题
p + theme_bw()
p + theme_light()
p + theme_minimal()
p + theme_void()
参考资料:
1http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/82-ggplot2-easy-way-to-change-graphical-parameters/
关于ggpubr包,您有什么想法请留言。
需要深入交流和沟通,请加我的微信:luqin360。备注:实名+工作或者专业,否则不会通过。
数据思考与践行
文章推荐

请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!