什么是箱线图?手把手教你看懂箱线图

1. 什么是箱线图?

箱线图(Box plot)是一种用来显示数据分布情况的统计图表。

它展示了一组数据的五个统计特征:下限、第一四分位数(Q1)、中位数、第三四分位数(Q3)和上限。外面的黑点显示离群值的存在和分布情况。

四分位数(quartile)是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。四分位数也被称为四分位点,它是将全部数据分成相等的四部分,其中每部分包括 25%的数据,处在各分位点的数值就是四分位数。四分位数有三个,第一个四分位数是下四分位数,第二个四分位数就是中位数,第三个四分位数称为上四分位数,分别用 Q1、Q2、Q3表示

四分位距IQR:是Q3-Q1,也就是说上下四分位数的差值。

上下限:上下限并不是整个数据样本的最大值和最小值,而是上限 = 去除异常值的最大值(Q3+1.5IQR)和下限 = 去除异常值的最小值(Q1-1.5IQR) ,在上下限这里分别划出两条线段作为异常值的分界点。

那么在箱线图中,上下限之间就是数据样本的正常分布区间,超出上下限就定义为异常值

显著性标签:常用来标注不同组之间的统计显著性差异。这些标签通常是通过统计测试(如 t 检验、ANOVA 等)得到的结果,表示不同组之间是否存在显著差异。显著性标签通常表现为星号(*)或者字母标记等,常见的规则如下:* (p < 0.05)表示显著差异。NS.表示不显著差异。

2. 绘图的数据准备

包含2个维度的数据,在组学数据中通常每一列是个样本,每一行是个基因。

注意受到数据中极大值的影响,箱线图可能会被压的很扁,可以做log转换或其他归一化方式。

示例数据可以在BioLadder2-在线绘制箱线图-使用教程找到并下载。

3. 绘制箱线图的方法

3.1. BioLadder v2.0 云平台在线绘图

BioLadder v2.0 是一个在线绘图平台,我们只需要上传数据,系统自动生成图表,不需要写代码,适合0代码基础的同学。网址:BioLadder v2.0-生物信息在线分析云平台

3.2. R语言绘制箱线图

喜欢自己写代码的同学,也附上R语言代码可供参考。

3.2.1. 绘图
# 加载R包,没有安装请先安装  install.packages("包名") 
library(tidyverse)

# 读取箱线图数据文件
df = read.delim("https://www.r2omics.cn/res/demodata/boxplot.txt",# 将此处换成你自己电脑里的文件
                header = T      # 指定第一行是列名
)

# 把数据转换成ggplot常用的类型(长数据)
df = df %>%
  pivot_longer(-1,names_to = "Sample",values_to = "Value")

# 绘图
p = ggplot(df,aes(x=Sample,y=Value,fill=Sample))+
  # stat_boxplot(geom = "errorbar",    # 添加误差线
  #  width=0.3)+
  geom_boxplot(alpha = 1,              # 透明度
               outlier.color = "black" # 离散点颜色
  )+
  theme_bw()+                          # 主题
  theme(
    axis.text.x = element_text(angle = 90,
                               vjust = 0.5
    )       # x轴刻度改为倾斜90度,防止名称重叠
  )
p

3.2.2. 添加显著性标签
library(ggsignif)  # 用于添加显著性标签

p + geom_signif(                         # 添加显著性标签
    comparisons=list(c("Sample1","Sample2"),c("Sample3","Sample4")), # 选择你想在哪组上添加标签
    step_increase = 0.1,
    test="t.test",                     # "t 检验,比较两组(参数)" = "t.test","Wilcoxon 符号秩检验,比较两组(非参数)" = "wilcox.test"
    test.args = list("var.equal" = T), # 等方差 
    map_signif_level=F                 # 标签样式F为数字,T为*号
  )

本文介绍了箱线图的定义、作用以及绘制方法,帮助理解数据的分布、集中趋势和异常值。感谢关注,点赞支持!

### 如何创建箱线图 #### 使用Seaborn绘制箱线图 为了使用Seaborn绘制箱线图,首先需要导入必要的库并加载数据集。下面是一个完整的例子: ```python import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据集 data = sns.load_dataset('tips') # 创建箱线图 sns.boxplot(x='day', y='total_bill', data=data) # 设置标题 plt.title('Box Plot of Total Bill by Day') # 显示形 plt.show() ``` 这段代码会生成一个显示每天总账单金额分布情况的箱线图[^1]。 #### 结合散点增强箱线图的信息量 有时仅靠箱线图可能不足以完全描述数据特征,这时可以在同一个坐标系内叠加其他类型的表以提供更多细节。例如,在箱线图基础上添加带有分布趋势的散点能够更直观地展现各组内的具体数值位置: ```python import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据集 tips = sns.load_dataset('tips') # 同时绘制箱线图和带分布趋势的散点 ax = sns.boxplot(x="day", y="total_bill", data=tips) ax = sns.swarmplot(x="day", y="total_bill", data=tips, color=".25") # 设置标题 plt.title('Box Plot with Swarm Plot Overlay') # 展示像 plt.show() ``` 此段代码先绘制了一个标准的箱线图,随后在同一张片上覆盖了代表实际观测值的小圆点,使得读者既能了解整体分布也能看到个体差异[^4]。 #### 使用Matplotlib绘制简单箱线图 如果偏好于更加底层的操作方式,则可以直接利用Matplotlib来实现相同效果: ```python import matplotlib.pyplot as plt import numpy as np # 假设有一个简单的二维数组作为输入数据 np.random.seed(0) data = [np.random.normal(size=100), np.random.normal(loc=5, size=100)] fig, ax = plt.subplots() # 调用boxplot函数传入数据列表即可得到所需的结果 ax.boxplot(data) # 自定义X轴标签 ax.set_xticklabels(['Group A', 'Group B']) # 添加标题 plt.title('Simple Box Plots Using Matplotlib') # 显示最终结果 plt.show() ``` 这里通过`matplotlib.pyplot`中的`boxplot()`方法实现了基本功能,并且可以通过设置参数来自定义样式和其他属性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值