【Python】箱图boxplot--统计数据、观察数据利器

article/2025/9/15 3:42:12
本文系统详解利用python中seaborn.boxplot绘制箱图boxplot。
seaborn.boxplot是matplotlib.pyplot.boxplot的封装版,
更个性化的设置请研究matplotlib.pyplot.boxplot

本文将了解到什么?

 
1、数据集准备及箱图简介
2、seaborn.boxplot箱图外观设置
默认参数绘制箱图箱图异常值属性设置 异常值关闭显示异常值marker大小设置异常值marker形状、填充色、轮廓设置
箱图上下横线属性设置 上下横线关闭上下横线颜色、线型、线宽等设置
箱图上下须线属性设置
箱图箱子设置箱子设置缺口箱子不填充颜色 箱子外框、内部填充色 
箱图中位数线属性设置 
箱图均值属性设置 均值使用点显示、设置点形状、填充色均值使用线显示 、线型、颜色设置
箱图中所有线属性设置 3、seaborn.boxplot分组箱图
分组绘图(方法一)
分组绘图(方法二)
箱子颜色设置 设置箱子颜色设置箱子颜色饱和度
箱子间距设置 
每个小组再按子组绘图 
按顺序绘制箱图

正文开始啦

a5526590bfd48b0d7ca479926fe41a88.png

一个箱图的主要组成原件

线图用来展现数据的分布,能直观的展示数据的关键指标(如下四分位数、上四分位数、中位数、最大值、最小值、离散点/异常值点);箱线图可直观展示不同组数据的差异;下面详细介绍python中matplotlib及seaborn库绘制箱图。

1、数据集准备及箱图简介

还是使用鸢尾花数据集iris,iris详细介绍请戳:Python可视化|matplotlib10-绘制散点图scatter

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import seaborn as sns
import palettable
from sklearn import datasets plt.rcParams['font.sans-serif']=['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于显示中文iris=datasets.load_iris()
x, y = iris.data, iris.target
pd_iris = pd.DataFrame(np.hstack((x, y.reshape(150, 1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'] )

查看数据集样子? 7e1edbefaddc34d4c71a605a7efa206f.pngpd_iris["sepal width(cm)"]简单统计,后文主要使用该列数据集绘图

pd_iris["sepal width(cm)"].describe()#以上各个值其实都可以使用describe函数查看

count    150.000000
mean       3.054000
std        0.433594
min        2.000000
25%        2.800000(下四分位数,25% 的数据小于等于此值。)
50%        3.000000(中位数,50% 的数据小于等于此值。)
75%        3.300000(上四分位数,75% 的数据小于等于此值。)
max        4.400000
Name: sepal width(cm), dtype: float64

上面注释部分很好的解释了下面箱图中四分位数的含义  2dd51deaf2d31abeb786d5e01c0cbb66.png


2、seaborn.boxplot箱图外观设置

  • 默认参数绘制箱图

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],#传入一组数据orient='v'#箱子垂直显示,默认为'h'水平显示)
plt.show()
0da8d02b1e909c8e76a95756348ed947.png
  • 箱图异常值属性设置

异常值关闭显示

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],showfliers=False,#异常值关闭显示)
plt.show()
a37084debd778a97eb2294b3b8849afb.png

异常值marker大小设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],orient='v',fliersize=15,#设置离散值marker大小,默认为5)
plt.show()
c5f484288e25c05356c6bb9752075623.png

异常值marker形状、填充色、轮廓设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],orient='v',flierprops = {'marker':'o',#异常值形状'markerfacecolor':'red',#形状填充色'color':'black',#形状外廓颜色},)
plt.show()
45c40b75c519250867ec6c7e30f35f59.png
  • 箱图上下横线属性设置

上下横线关闭

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],showcaps=False,#上下横线关闭)
plt.show()
5f064842aec27370a4b3f4029e19ed43.png

上下横线颜色、线型、线宽等设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],capprops={'linestyle':'--','color':'red'},#设置上下横线属性)
plt.show()
f48f80c79523f455722bcb05013926f0.png
  • 箱图上下须线属性设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],whiskerprops={'linestyle':'--','color':'red'},#设置上下须属性)
plt.show()
580816e176363b3c6d6609f2bad79da8.png
  • 箱图箱子设置

箱子设置缺口

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],orient='v',notch=True,#箱子设置缺口)
plt.show()
7904c61002176bbe969bc74bed233fa5.png

箱子不填充颜色

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],orient='v',color='white',#箱子不填充)
plt.show()
7dbe39a26426c19675b2df39d285511e.png

箱子外框、内部填充色

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],boxprops = {'color':'red',#箱子外框'facecolor':'pink'#箱子填充色},#设置箱子属性)
plt.show()
a2f007a0d01386af9ca9258275f27ba1.png
  • 箱图中位数线属性设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],medianprops = {'linestyle':'--','color':'red'},#设置中位数线线型及颜色)
plt.show()
d3a9cd4e00c0a8955d88e7f5da1b9818.png
  • **箱图均值属性设置 **

均值使用点显示、设置点形状、填充色

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],showmeans=True,#箱图显示均值,meanprops = {'marker':'D','markerfacecolor':'red'},#设置均值属性)
plt.show()
e21f5e6ba05eb7e2f842ce033aebcead.png

均值使用线显示 、线型、颜色设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],showmeans=True,#箱图显示均值,meanline=True,#显示均值线meanprops = {'linestyle':'--','color':'red'},#设置均值线属性)
plt.show()
5e271605fa7fcae21cbccf4c92efc732.png
  • 箱图中所有线属性设置

plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],orient='v',linewidth=8#设置箱子等线的宽度)
plt.show()
331a79e123042e8ee4acfd241f584421.png

3、seaborn.boxplot分组箱图

  • 分组绘图(方法一)

plt.figure(dpi=100)
class_name=[iris.target_names[0] if i==0.0 else iris.target_names[1] if i==1.0 else iris.target_names[2] for i in pd_iris['class']]
sns.boxplot(x=class_name,#按照pd_iris["sepal width(cm)"]分组,即按照每种鸢尾花('setosa', 'versicolor', 'virginica')分组绘图y=pd_iris["sepal width(cm)"],#绘图数据orient='v')
plt.show()
7be25168cc4857cabcd87784def97cfb.png
  • 分组绘图(方法二)

plt.figure(dpi=100)
sns.boxplot(x='class',y='sepal width(cm)',data=pd_iris,#data的作用就是x,y每次不需要输入pd_irisorient='v')
plt.show()
6858de75c375686411580be9b5f9fb4e.png
  • 箱子颜色设置

设置箱子颜色

import palettable
plt.figure(dpi=100)
sns.boxplot(x='class',y='sepal width(cm)',data=pd_iris,orient='v',palette=palettable.tableau.TrafficLight_9.mpl_colors,#设置每个箱子颜色)
plt.show()
213ff02e75218f8c87fa049194b27c20.png

设置箱子颜色饱和度

import palettable
plt.figure(dpi=100)
sns.boxplot(x='class',y='sepal width(cm)',data=pd_iris,orient='v',palette=palettable.tableau.TrafficLight_9.mpl_colors,saturation=0.3,#设置颜色饱和度)
plt.show()
40114c36123ba05c2c0af5b306120555.png
  • 箱子间距设置

import palettable
plt.figure(dpi=100)
sns.boxplot(x='class',y='sepal width(cm)',data=pd_iris,orient='v',palette=palettable.tableau.TrafficLight_9.mpl_colors,saturation=0.3,#设置颜色饱和度width=1.0,#设置箱子之间距离,为1时,每个箱子之间距离为0)
plt.show()
5377b47bec3f563e1225b92856868c52.png
  • 每个小组再按子组绘图

plt.figure(dpi=100)
class_name=[iris.target_names[0] if i==0.0 else iris.target_names[1] if i==1.0 else iris.target_names[2] for i in pd_iris['class']]
sns.boxplot(x=class_name,y=pd_iris['sepal width(cm)'],hue=pd_iris['petal width(cm)'],#每类按照子类分组:上图三类再按照'sepal width(cm)'分组绘图orient='v')
plt.show()
e48839cd3e6c3aa94d3796f0492ce6eb.png
  • 按顺序绘制箱图

plt.figure(dpi=100)
class_name=[iris.target_names[0] if i==0.0 else iris.target_names[1] if i==1.0 else iris.target_names[2] for i in pd_iris['class']]
sns.boxplot(x=class_name,y=pd_iris["sepal width(cm)"],hue=pd_iris['petal width(cm)'],order=["virginica", "versicolor", "setosa"],#设置箱子的显示顺序hue_order=sorted(list(pd_iris['petal width(cm)'].unique())),#设置每个子类中箱子的显示顺序,此处设置从小到大排序orient='v')
plt.show()
5df9aa8c516a78901795f1e6bf3d549c.png

4、参考资料

  • 以上涉及到单颜色设置,详细见:Python可视化|matplotlib05-内置单颜色(一);Python可视化|matplotlib06-外部单颜色(二);

  • 涉及到colormap设置,详细见:Python可视化|matplotlib07-自带颜色条Colormap(三);Python可视化|08-Palettable库中颜色条Colormap(四)

  • 涉及到marker及linestyle设置,详细见:Python可视化|matplotlib03-一文掌握marker和linestyle使用

  • https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html?highlight=boxplot#matplotlib.pyplot.boxplot

  • http://seaborn.pydata.org/generated/seaborn.boxplot.html#seaborn.boxplot

 
 
 
 
 
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

86ae1f0363501c12ad12cf4a75b8dd29.png


http://chatgpt.dhexx.cn/article/BOs3ahby.shtml

相关文章

pandas 箱型图(boxplot)详解

首先看一段例子: import pandas as pd from pandas import DataFrame,Series df DataFrame(np.random.randn(10, 2), columns[Col1, Col2]) boxplotdf.boxplot()  通过boxplot方法,我们直接得到了箱型图。 boxplot方法官…

盒须图(Boxplot)

盒须图(Boxplot)主要用于对数据分布的显示。对于详细数据的显示通常采用下面几种方法。 最简单的方法是把所有的数据显示在一个散点图上。读者可以直接观察数据点的分布。 但如果数据量很大,数据点就会大量的重叠。虽然可以采用一些方法来减少…

Boxplot(盒图)

今天看到一个程序(matlab版本),里面有个函数叫“boxplot”,没见过,查了些资料,找到一篇不错的文章,贴在这供大家参考。 地址:http://blog.renren.com/share/221363020/2984638910&a…

R语言箱型图 boxplot

boxplot简介 boxplot称为箱型图,又叫做盒状图,胡须图。是用来表示数值类型数据分布状况的统计图。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。 四分位数百度百科 第一四分位数 (Q1),又称“较小四分位数”,等于…

matlab: 盒图---boxplot

盒图(boxplot) 盒图是在1977年由美国的统计学家约翰图基(John Tukey)发明的。它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如上图…

(转载)箱线图boxplot解释与python绘制

原文链接 箱线图boxplot - 喜欢吃面的猪猪 - 博客园 箱线图boxplot——展示数据的分布 图表作用: 1.反映一组数据的分布特征,如:分布是否对称,是否存在离群点 2.对多组数据的分布特征进行比较 3.如果只有一个定量变量,很少用箱…

盒图(boxplot)

盒图(boxplot) 盒图是在1977年由美国的统计学家约翰图基(John Tukey)发明的。它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如上图…

python/Matplotlib 中绘制多箱线图(boxplot)

两种绘制方式,不可混淆 一、DataFrame绘制单坐标轴 两种都试一下 可能我的anaconda有点问题 2代码不好用 下次再完善 1、anaconda import numpy as np import pandas as pd import matplotlib.pyplot as plt from pylab import * rcParams[axes.unic…

【R语言】24种R语言作图新手入门之boxplot箱线图(二)

目录 一、前言二、初阶画图2.1 基础语法2.2 简单箱线图2.3 带点箱线图2.4 给线条“上色”2.5 填充“上色”2.6 修改图形顺序 三、进阶画图3.1 排序箱线图3.2 差异箱线图3.3 多基因差异箱线图3.4 多组差异箱线图3.5 多基因多组差异箱线图 四、讨论 一、前言 箱线图一般用于可视…

sns.boxplot()简单用法

sns.boxplot() 箱形图(Box-plot): 又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。它能显示出一组数据的最大值、最小值、中位数及上下四分位数 #参数如下: seaborn.boxplot(xNone, yN…

Matplotlib - 箱线图、箱型图 boxplot () 所有用法详解

目录 基本用法 水平箱线图,显示均值 改变箱线图的形状(箱体的形状notch、异常值的形状sym) 改变箱线图的颜色(箱体边框的颜色、箱体填充色) 相较散点图和折线图,柱状图、饼图、箱线图(箱…

matlab之绘制箱线图函数boxplot

一、功能 用箱线图可视化汇总统计量 二、语法 1.boxplot(x) 创建 x 中数据的箱线图。如果 x 是向量,boxplot 绘制一个箱子。如果 x 是矩阵,boxplot 为 x 的每列绘制一个箱子。 在每个箱子上,中心标记表示中位数,箱子的底边和…

超详细Seaborn绘图 ——(二)boxplot boxenplot

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。 它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。箱形图最大的优点就是不受异常值的影响(异常值也…

matplotlib之pyplot模块——绘制箱线图(盒须图)boxplot()(二)演示外观参数、返回值

当前有效matplotlib版本为:3.4.1。 概述 boxplot()函数的作用是绘制箱线图(箱线图、盒须图、箱图)。 箱线图是由一个箱体和一对箱须所组成的统计图形。箱体是由第一四分位数、中位数(第二四分位数)和第三四分位数所…

matplotlib之pyplot模块——绘制箱线图(盒须图)boxplot()(一)基本参数

当前有效matplotlib版本为:3.4.1。 概述 boxplot()函数的作用是绘制箱线图(箱线图、盒须图、箱图)。 箱形图(boxplot)又称盒须图或箱线图,是一种用来显示某一组数据分散情况的统计图,因形状如…

matplotlib.pyplot.boxplot()绘制箱型图

目录 一、matplotlib.pyplot.boxplot()语法 二、绘制箱型图 ①绘制简单箱型图 ②各个参数绘制箱型图 (1)notch参数(bool值,是否凹口的形式展现箱线图,默认值False非凹口) (2)sy…

Matlab中boxplot函数的用法

Boxplot函数: boxplot(x)函数:绘制数据X的盒须图。如果X为矩阵,则对每一列分别进行绘制。盒须图用于表现数据统计信息,由“盒”与“须”组成,“盒”中有一条直线,表示样本的中位数&a…

Matplotlib——箱线图boxplot()函数

箱线图一般用来展现数据的分布,如上下四分位值、中位数等,也可以直观地展示异常点。Matplotlib提供了boxplot()函数绘制箱线图。 import matplotlib.pyplot as plt_ plt.boxplot(range(10)) # 10个数,0-9plt.show()箱线图虽然看起来简单&a…

python绘制箱线图boxplot()

最近在处理数据时,需要使用python绘制箱线图。 1. 箱线图 箱线图(Box-plot)又称为盒式图或箱型图,是一种用来显示一组数据分散情况的统计图,它能显示一组数据的上界、下界、中位数、上下四分位数以及异常值等。 四分…

boxplot

1. 简介 箱形图,又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。箱形图于1977年由美国著名统计学家约翰图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、上下四分位数及…