R数据可视化2:箱形图 Boxplot

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R数据可视化2:箱形图 Boxplot相关的知识,希望对你有一定的参考价值。

参考技术A

箱形图(Box-plot)是一种用作 显示一组数据分散情况 的统计图,因形状如箱子而得名。除了生信领域,该图在其他领域也经常被使用。主要用于反映原始数据分布的特征,并且可以进行多组数据分布特征的比较。箱形图能显示出一组数据的 最大值(Maximum)、最小值(Minimum)、中位数(Median)及上下四分位数(1st/3rd Quartile) ,同时还可以显示 逸出值(Outlier)

那么,这些值是如何被计算出来的呢?什么样的数据会被判定为逸出值呢?

第一四分位数(Q1) ,又称 较小四分位数 ,等于该样本中所有数值由小到大排列后第25%的数字。
第二四分位数 ,又称 中位数 ,等于该样本中所有数值由小到大排列后第50%的数字。
第三四分位数(Q3) 又称 较大四分位数 ,等于该样本中所有数值由小到大排列后第75%的数字。
逸出值 ,是根据四分位间距(interquartile range)进行计算的:
四分位间距 = Q3-Q1 = ΔQ
在区间 Q3+1.5ΔQ, Q1-1.5ΔQ 之外的值即被视为逸出值。

(1) 需要什么格式的数据
我们需要的数据只要两列,一列为x,一列为y。本次我们使用R中提供的iris数据。

这个数据共有5列,分别为花萼长度(Sepal.Length)、花萼宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)以及物种(Species)。

比如我们想要探究不同物种的花萼长度差异。

(2) 如何使用ggplot2做箱形图

利用ggplot2画图的核心命令是 geom_boxplot 。我们先来尝试做一个最最基础也是最丑的boxplot图。

可以看到不同的物种之间Sepal.Length有所不同,那么这种差异显著吗?

这个时候我们就需要做检验,那么如何可以直接把检验结果展示在图中呢。这个时候我们可以使用另一个 R包ggpubr

同时如果你的检验是成对的那么可以加上参数 paired=T ,如果你不想用默认的wilcox.test你可以将method改为其他的。比如我想要做一个成对的t检验:
stat_compare_means(aes(label = ..p.signif..),method="t.test",paired=T)
可以发现这里我没有添加comparisons参数,那么结果就是看三组是否存在两组间有显著差异。
具体的大家可以使用命令 ?stat_compare_means 查看帮助手册。

然后我们还可以修改颜色等等。

这样,一张简洁的Boxplot图就完成啦。

你如何改变熊猫箱形图Y轴的传播?

【中文标题】你如何改变熊猫箱形图Y轴的传播?【英文标题】:How do you change the spread of the Y axis of pandas box plot? 【发布时间】:2021-07-11 23:26:37 【问题描述】:

我正在为 9 个不同的组绘制 100 个数据点。一组的数据点比所有其他组大得多,所以当我使用 pandas 制作箱形图时,只显示该组,而所有其他组都被砸到底部。这是它现在的样子:smushed box plot

我希望 Y 轴的间距更大,以便我可以看到其他组的箱形图。这是散点图中的类似数据,具有我正在寻找的间距:well spaced scatter plot

What I have What is need

这是我目前的代码:

# use ``` to designate a code block in markdown
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_csv("residues.csv")
df.plot.box()
plt.show()

【问题讨论】:

【参考方案1】:

您似乎希望对 y 进行对数缩放:

df.plot.box(logy=True)

【讨论】:

【参考方案2】:

试试这个:

boxplot = df.boxplot(column=df.columns)
plt.show()

参考

请参阅箱线图上的 pandas 文档:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.boxplot.html

【讨论】:

这并不能解决我的问题,即图中仅显示最大值的列。有没有办法让 Y 轴分布更均匀,以便可以看到所有列的范围。就像我原帖中的第二张图片一样。

以上是关于R数据可视化2:箱形图 Boxplot的主要内容,如果未能解决你的问题,请参考以下文章

ML之R:通过数据预处理(缺失值/异常值/特殊值的处理/长尾转正态分布/目标log变换/柱形图-箱形图-小提琴图可视化/构造特征/特征筛选)利用算法实现二手汽车产品交易价格回归预测之详细攻略

可视化神器Plotly玩转箱形图

Python数据可视化 箱线图

如何从箱形图数据中删除序列?

使用 ggplot2 将平均值添加到 R 中的分组箱形图

R语言ggplot2可视化箱图(boxplot)自定义设置抑制箱图中异常值数据点的输出(removes boxplot outliers in the ggplot2 graph)