Matplotlib:可视化箱线图boxplot

2023-11-05 11:40

本文主要是介绍Matplotlib:可视化箱线图boxplot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

箱线图统计学知识

  • 上限值:Q1-1.5×IQR
  • 上相邻值:距离上限值最近的值
  • 须线:上下分位数各自与上下相邻值的距离
  • 上四分位数(Q1):一组数据按顺序排列,从小至大第25%位置的数值
  • 中位数:一组数据按顺序排列,从小至大第50%位置的数值
  • 中位线(IQR):Q3-Q1上四分位数至下四分位数的距离
  • 下四分位数(Q3):一组数据按顺序排列,从小至大第75%位置的数值
  • 下相邻值:距离下限值最近的值
  • 下限值:Q3+1.5×IQR
  • 离群值(异常值):一组数据中超过上下限的真实值
    在这里插入图片描述
    对照正态分布图来参考:
    在这里插入图片描述
    如果中位线往右偏移,那么数据呈左偏分布;
    如果中位线往左偏移,那么数据呈右偏分布

箱形图又称为盒须图,盒式图或箱线图。是一种用作显示一组数据分散情况资料的统计图。

plt.boxplot(		x, notch=None, sym=None,vert=None, whis=None, positions=None, widths=None, patch_artist=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None)
  • x:指定要绘制箱线图的数据;
  • notch:是否是凹口的形式展现箱线图,默认非凹口;
  • sym:指定异常点的形状,默认为+号显示;
  • vert:是否需要将箱线图垂直摆放,默认垂直摆放;
  • whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
  • positions:指定箱线图的位置,默认为[0,1,2…];
  • widths:指定箱线图的宽度,默认为0.5;
  • patch_artist:是否填充箱体的颜色;
  • meanline:是否用线的形式表示均值,默认用点来表示;
  • showmeans:是否显示均值,默认不显示;
  • showcaps:是否显示箱线图顶端和末端的两条线,默认显示;
  • showbox:是否显示箱线图的箱体,默认显示;
  • showfliers:是否显示异常值,默认显示;
  • boxprops:设置箱体的属性,如边框色,填充色等;
  • labels:为箱线图添加标签,类似于图例的作用;
  • filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;
  • medianprops:设置中位数的属性,如线的类型、粗细等;
  • meanprops:设置均值的属性,如点的大小、颜色等;
  • capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;
  • whiskerprops:设置须的属性,如颜色、粗细、线的类型等;
import numpy as np
import matplotlib.pyplot as pltnp.random.seed(100)# 生成一组随机数,数量为1000
data = np.random.normal(size=(1000,), loc=0, scale=1)# sym 调整好异常值的点的形状
# whis 默认是1.5, 通过调整它的竖直来设置异常值显示的数量,
# 如果想显示尽可能多的异常值,whis设置很小,否则很大,也可以分别设定上下限whis=[5, 95]
plt.boxplot(data, sym="o", whis=1.5)
# plt.boxplot(data, sym ="o", whis = 0.01)
# plt.boxplot(data, sym ="o", whis = 999)
plt.show()

在这里插入图片描述

创建多组箱形图


# 在同一张图中显示多组箱形图import numpy as np
import matplotlib.pyplot as pltnp.random.seed(100)
# 用来设置每一组的名字
labels = ["A", "B", "C", "D", "E"]# 创建5组,每一组有1000个数
data = np.random.normal(size = (1000, 5), loc= 0, scale= 1)plt.boxplot(data, labels = labels, sym = "o")
plt.show()

在这里插入图片描述

patch_artist:是否填充箱体的颜色;True or False

利用 numpy 库生成三组正态分布随机数:

import  matplotlib.pyplot as  plt
import  numpy as  npall_data=[np.random.normal(0,std,100) for std in range(1,4)]
plt.boxplot(all_data,patch_artist = False)  #False    #描点上色
plt.show()

在这里插入图片描述
Note:默认 patch_artist=False,所以我们需要指定其参数值为 True,即可自动填充颜色。

notch=True, 切口形状 ,vert=True是否需要将箱线图垂直摆放,默认垂直摆放

缺口表示50%分位点的置信区间,缺口太大表示分布太分散了

all_data=[np.random.normal(0,std,100) for std in range(1,4)]
#首先有图(fig),然后有轴(ax)
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))bplot1=axes[0].boxplot(all_data,vert=True,patch_artist=True)#axes[0]表示在第一张图的轴上描点画图
#vert=True表示boxplot图是竖着放的
#patch_artist=True 表示填充颜色bplot2 = axes[1].boxplot(all_data,notch=True,  # 切口形状vert=True,patch_artist=True)
plt.show()

在这里插入图片描述

美化图形

箱线图对象的类型:
type(bplot1)
#dict
返回字典字典类型

填充颜色基本遵循以下步骤:

  • 指定箱线图中每个箱子的填充颜色,如:red、green、blue、pink 等 构造字典存放箱子配色 ——{箱线图中每个箱子patch:对应的配色color}
  • 重新上色 —— patch.set_facecolor(color)
import  matplotlib.pyplot as  plt
import  numpy as  npall_data=[np.random.normal(0,std,100) for std in range(1,4)]
#首先有图(fig),然后有轴(ax)
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))
bplot1=axes[0].boxplot(all_data,vert=True,patch_artist=True)bplot2 = axes[1].boxplot(all_data,notch=True,vert=True,patch_artist=True)# 颜色填充
colors = ['pink', 'lightblue', 'lightgreen']
for bplot in (bplot1, bplot2):for patch, color in zip(bplot['boxes'], colors):patch.set_facecolor(color)plt.show()

在这里插入图片描述

添加网格线
  • 指定在x轴上添加网格线(ax.xaxis.grid(True)),或者在y轴上添加网格线(ax.yaxis.grid(True))
  • 指定 x 轴和 y 轴上的刻度个数(ax.set_xticks([1,2,3]),ax.set_yticks([1,2,3,4,5,6,7,8]))
  • 设置 x 轴名称(ax.set_xlabel(“xlabel”))
  • 设置 y 轴名称(ax.set_xlabel(“ylabel”))
import matplotlib.pyplot as plt
import numpy as npall_data=[np.random.normal(0,std,100) for std in range(1,4)]#首先有图(fig),然后有轴(ax)
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))bplot1=axes[0].boxplot(all_data,vert=True,patch_artist=True)bplot2 = axes[1].boxplot(all_data,notch=True,vert=True, patch_artist=True)#颜色填充
colors = ['pink', 'lightblue', 'lightgreen']
for bplot in (bplot1, bplot2):for patch, color in zip(bplot['boxes'], colors):patch.set_facecolor(color)# 加水平网格线
for ax in axes:ax.yaxis.grid(True) #在y轴上添加网格线ax.set_xticks([y+1 for y in range(len(all_data))] ) #指定x轴的轴刻度个数## [y+1 for y in range(len(all_data))]运行结果是[1,2,3]ax.set_xlabel('xlabel') #设置x轴名称ax.set_ylabel('ylabel') #设置y轴名称# 添加刻度
# 添加刻度名称,我们需要使用 plt.setp() 函数:# 加刻度名称
plt.setp(axes, xticks=[1,2,3],xticklabels=['x1', 'x2', 'x3'])
# 我们的刻度数是哪些,以及我们想要它添加的刻度标签是什么。plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt# 其他参数
# 在图上标记出均值线fig,axes=plt.subplots(1,2,figsize=(9,5))
axes[0].boxplot(data,labels=labels,showmeans=True,meanline=False)
axes[0].set_title("默认 meanline=False",fontsize=15)
axes[1].boxplot(data,labels=labels,showmeans=True,meanline=True)
axes[1].set_title("meanline=True",fontsize=15)
plt.show()# Note:# meanline=False,那么均值位置会在图中用小三角表示出来# meanline=True,那么均值位置会在图中用虚线表示出来
# 默认 showfliers=True,那么图中会显示出离群值# showfliers=False,那么图中会去除离群值

这篇关于Matplotlib:可视化箱线图boxplot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349610

相关文章

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

matplotlib中文乱码问题

在使用Matplotlib进行数据可视化的过程中,经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导致中文无法正常显示,所以显示中文乱码。 文本使用系统默认字体、手动指定字体、使用字体管理器来解决。 一、系统默认字体(全局设置字体) 在Matplotlib中

「大数据分析」图形可视化,如何选择大数据可视化图形?

​图形可视化技术,在大数据分析中,是一个非常重要的关键部分。我们前期通过数据获取,数据处理,数据分析,得出结果,这些过程都是比较抽象的。如果是非数据分析专业人员,很难清楚我们这些工作,到底做了些什么事情。即使是专业人员,在不清楚项目,不了解业务规则,不熟悉技术细节的情况下。要搞清楚我们的大数据分析,这一系列过程,也是比较困难的。 我们在数据处理和分析完成后,一般来说,都需要形成结论报告。怎样让大

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能,但它与其他Python库(如Matplotlib和Seaborn)无缝集成,允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法: 1. 使用Matplotlib Pandas中的plot()方法实际上是基于Matplotlib的,你可以使用它来绘制各种基本图表,例如折线图、柱状图、散点图等。 import pandas

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)「首先来看看目前已有的资料,还会不断更新哦~一次购买,后续不会再被收费哦,保证是全网最全资源,随着后续内容更新,价格会上涨,越早购买,价格越低,让大家再也不需要到处买断片资料啦~💰💸👋」�

Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值 图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3), jpg、png图像格式 jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数 png图像的灰度值范

使用matplotlib绘制散点图、柱状图和饼状图-学习篇

一、散点图 Python代码如下: num_points = 100x = np.random.rand(num_points) #x点位随机y = np.random.rand(num_points) #y点位随机colors = np.random.rand(num_points) #颜色随机sizes = 1000 * np.random.rand(num_points) # 大