箱线图是利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法,它也可以粗略地看出数据是否具有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。使用R自带的boxplot函数绘制的箱线图可能让你很不满意,今天给大家介绍使用基于ggplot2的可视化包ggpubr的ggboxplot函数来绘制让你满意的boxplot图。
一、基础绘图(以R自带数据包ToothGrowth为例)
1.1 首先,加载数据集,输入原始数据
> install.packages("ggplot2")
> library("ggplot2")
> install.packages("ggpubr")
> library("ggpubr")
> data("ToothGrowth")
> dt <- ToothGrowth
输入数据格式如下,若数字格式不是这样可以使用reshape2包中的melt函数进行转换:
![]() |
1.2 然后画图
> p <- ggboxplot(df1, x="dose", y="len")
> p
如果不对参数进行任何修改,仅用默认参数,得到的图形是这个样子的。
![]() |
得到原始图片比较简单,想要用到文章当中还是需要再进行一番修改。
二、调整参数设置
2.1 参数修改:
fill填充颜色
palette设置填充的颜色,其中npg为杂志nature的配色
width设置箱图的宽度
size调整轮廓和点的大小
xlab,ylab设置x轴、y轴的标签
font.x,font.y设置x轴、y轴标签的大小
font.xtickslab,font.ytickslab设置x轴、y轴坐标的大小
> p <- ggboxplot(df1, x="dose", y="len", fill="dose", palette = "npg", width = 0.5,size = 0.8,
xlab = FALSE,ylab = "Length",font.y=20,font.xtickslab = 20,font.ytickslab = 20)
> p
调整后的箱图已经基本布局已经改观了不少:
![]() |
2.2 其他层添加
> p <- p + scale_x_discrete(limits=c("0.5", "1", "2")) +
#自定义x轴的标签位置
labs(title = "Comparison of different doses")+
#添加标题,也可添加x轴、y轴的标签
theme(legend.position='none',plot.title = element_text(size=25,hjust = 0.5))
#设置主题,去掉图例;plot.title设置标题的属性,如大小、位置等
> p
![]() |
箱线用于几个样本的比较,单从图上来看我们很难判断这三组样本之前是否显著差异,因此我们再添加统计层。
> p <- p+stat_compare_means(comparisons = list(c("0.5", "1"), c("1", "2"), c("0.5", "2")),label= "p.signif")
> p
![]() |