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数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2