R语言作图实战——boxplot

作者: 克里克的钟 | 来源:发表于2019-10-29 22:54 被阅读0次

一、基础知识

箱式图用于多组数据平均水平和变异程度的直观分析比较。每一组数据均可呈现其最小值(Minimum)、Qlow、Median、Qup、最大值(Maximum),Median表示中位数所在的位置,最小值、最大值形成的间距和QL、QU形成的间距都可以反应数据的变异程度。

箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间。《贾俊平、何晓群、金勇.统计学(第四版):中国人民大学出版社,2009年:66-67》

image.png

为了作图和理解ggplot2中的术语,对应的英文图如下:


image.png

median:中位数;
Q1: 下四分位数;
Q3:上四分位数;
IQR:四分位范围; = Q3 - Q1
Maximum = Q3 + 1.5 * IQR;
Minimum = Q1 - 1.5 * IQR;

在区间 Q3+1.5ΔQ,~Q1-1.5ΔQ 之外的值被视为应忽略(farout)。最大值与最小值产生于这个区间。区间外的值被视为outliers显示在图上。

二、ggplot2作图

image.png

这是nature文章上的一张图:doi:10.1038/nature11252。没有原始数据,我们就来模拟一份数据:

library(tidyverse)
#模拟数据
group <- rep(c('No', 'Broad', 'Focal'),each = 50)
set.seed(1)
No <- rnorm(50, mean = -3.2, sd = 1.1)
set.seed(2)
Broad <- rnorm(50, mean = -3.02, sd = 0.5)
set.seed(3)
Focal <- rnorm(50, mean = 2.45, sd = 0.8)
data <- data.frame(group, value = c(No, Broad, Focal))
data1 <- data.frame(group = c('No', 'No', 'No', 'Broad', 'Broad', 'Focal'), value = c(4, 1.8, -1.6, 4.2, 1.5, -3.2 ))#添加几个区间外的值
data <- rbind(data, data1)

data$group<-factor(data$group,levels=c('No', 'Broad', 'Focal'),ordered = TRUE)#按照上图的顺序排列

#绘图
y <- ggplot(data=data,mapping = aes(x=group, y=value, color = group))+
  geom_boxplot(fill ='white', color = "darkgrey", size=0.5, width = 0.5,outlier.shape = NA )+
  geom_jitter(color = "darkblue", shape = 4, size = 1,  width = 0.05)+
  labs(
    x = "",
    y = "mRNA expression",
    title = 'IGF2'
  )+
  theme_bw()+
  theme(
    panel.grid.major=element_blank(),
    panel.grid.minor=element_blank(), #次级网格线), #网格线
    )
tiff("fig.tiff", res = 300, width = 700, height = 800)
y
dev.off()

得到图如下:


image.png

图就做好了,跟文章的图差别不大。但是,上图没有类似误差线的横线,而发表的文章中基本上都会。接下来我们处理这个问题。
在ggplot()后面添加一行

stat_boxplot(geom ='errorbar', width = 0.4)

就可以了。


image.png

完整代码:

y <- ggplot(data=data,mapping = aes(x=group, y=value))+
  stat_boxplot(geom ='errorbar', color = 'darkgrey', width = 0.4) +
  geom_boxplot(fill = "white", color = 'darkgrey', size=0.5, width = 0.8,outlier.shape = NA )+
  geom_jitter(color = "darkblue", shape = 4, size = 1,  width = 0.05)+
  labs(
    x = "",
    y = "mRNA expression",
    title = 'IGF2'
  )+
  theme_bw()+
  theme(
    panel.grid.major=element_blank(),
    panel.grid.minor=element_blank(), #次级网格线), #网格线
    )
tiff("fig.tiff", res = 300, width = 700, height = 800)
y
dev.off()

待完善的地方:IGF2文章中的图用的是斜体,不知道有没有办法改;如何让x坐标轴的No ampl.显示成两行。
横线的添加参考于:https://www.r-bloggers.com/exploring-ggplot2-boxplots-defining-limits-and-adjusting-style/

相关文章

  • R语言作图实战——boxplot

    一、基础知识 箱式图用于多组数据平均水平和变异程度的直观分析比较。每一组数据均可呈现其最小值(Minimum)、Q...

  • 2020-10-26学习小组Day4笔记--文惠

    因为我会用R和R studio,所以笔记比较少 R作图:plot散点图boxplot箱线图清除所有数据rm(lis...

  • 2020-06-29

    R语言boxplot绘图函数 boxplot 用于绘制箱线图,我们都知道boxplot 用于展示一组数据的总体分布...

  • R语言作图实战——barplot

    图片来源于新英格兰医学杂志文章:https://www.nejm.org/doi/full/10.1056/NEJ...

  • 生信入门6-R画图

    作图 用R的基础包区别清楚:高级绘图函数(如plot、boxplot等),低级绘图函数(如curve、points...

  • 学习小组Day4笔记-皇晓燕

    R语言和R studio R语言是全面的统计分析平台,计算作图等等 R studio是R语言的操作平台 下载R语言...

  • 学习小组day4笔记-曾俊辉

    R语言和R studio R语言是全面的统计分析平台,计算作图等等等等R studio是R语言的操作平台 下载R语...

  • 03-08

    06 R语言作图 图就是数据,数据就是图 常用可视化R包 作图:base,ggplot2, ggpubr;拼图:p...

  • R语言 循环作图

  • R语言作图基础

    本文非原创 par()函数的参数可见:R 绘图参数设置函数par()详解 文字 点、线 点和线是很基础的元素,点的...

网友评论

    本文标题:R语言作图实战——boxplot

    本文链接:https://www.haomeiwen.com/subject/ordnvctx.html