Matplotlib 库使用入门7——箱形图、小提琴图

  • 箱形图
    • boxplot() 函数
    • 绘制示例
  • 小提琴图
    • violinplot() 函数
    • 绘制示例

在前面关于 matploblib 的文章中,笔者分别介绍了:

  • matplotlib 库的安装与配置、常用套路和绘图组件
  • 画布和绘图域的创建、图素的设置、用 plot 函数绘制线图并设置图例、网格
  • 绘制多种柱状图
  • 绘制直方图
  • 绘制饼图
  • 绘制散点图

本篇介绍 箱形图小提琴图 以及 matplotlib 绘制的方法并给出了示例。

箱形图

箱形图(Box-plot)于 1977 年由美国著名统计学家约翰·图基(John Tukey)发明,因形状像箱子而得名。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数,用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

箱形图结构如下图所示,从上四分位数到下四分位数绘制一个盒子,然后用一条垂直触须(称为“盒须”)穿过盒子的中间。上垂线延伸至上边缘(最大值),下垂线延伸至下边缘(最小值)。

boxplot() 函数

Matplotlib 提供了 boxplot() 函数来绘制箱形图,可以应用在 MATLAB 样式以及面向对象的绘图方法中。当与 axes 对象一起使用时,语法格式如下:

  • axes.boxplot(x, notch, sym, vert, whis, positions, widths, patch_artist, bootstrap, usermedians, conf_intervals, meanline, showmeans, showcaps, showbox, showfliers, boxprops, labels, flierprops, medianprops, meanprops, capprops, whiskerprops, manage_ticks=True, autorange=False, zorder, capwidths, *, data)
    x:数据序列。
    notch:若为 True,将生成一个缺口箱线图。否则,生成一个矩形箱线图。
    sym:字符串值,它是飞行点数的默认符号。
    vert:若为 True,它会使方框垂直,否则是水平的。
    whis:决定了晶须在第一和第三四分位数以外的延伸范围。
    positions:设置框的位置。
    widths:用于设置带有标量或序列的每个框的宽度。
    patch_artist:若为 False,则用于生成带有 Line2D 艺术方框。
    bootstrap:布尔值,指定是否引导切口箱线图的中间值周围的置信区间。
    usermedians:一个数组或序列,其第一个维度与 x 兼容。
    conf_interval:一个数组或序列,其第一个维度与 x 兼容,第二个维度为 2。
    labels:每个数据集的标签。
    manage_ticks:调整 tick 的位置和标签。
    zorder:该参数用于设置箱线图的 zorder。

绘制示例

示例:

import numpy as np
import matplotlib.pyplot as pltnp.random.seed(10)
a1 = np.random.normal(90, 20, 200)
a2 = np.random.normal(70, 25, 200)
a3 = np.random.normal(100, 10, 200)
a4 = np.random.normal(80, 30, 200)fig = plt.figure('Box example1', figsize=(7, 9))
ax1 = fig.add_subplot(211)
ax1.boxplot([a1, a2, a3, a4], labels=['data1','data2','data3','data4'])
ax1.set_title('matplotlib.axes.Axes.boxplot() Example')ax2 = fig.add_subplot(212)
ax2.boxplot([a1, a2, a3, a4], notch=True, vert=False, whis=0.75)  # 生成缺口箱线图,水平方向,并指定延伸范围
plt.show()

上述代码绘制图像如下:

小提琴图

小提琴图(Violin Plot)是用来展示数据分布状态以及概率密度的图表,跟箱形图类似,但小提琴图还显示数据在不同数值下的概率密度。小提琴图使用核密度估计(KDE)来计算样本的分布情况,图中要素包括了中位数、四分位间距以及置信区间。在数据量非常大且不方便一一展示的时候,小提琴图特别适用。

小提琴图比箱型图提供了更多的信息,虽然箱型图显示了均值、中位数和上、下四分位数等统计信息,但是小提琴图却显示了数据的完整分布情况,这更利于数据的分析与比对。

violinplot() 函数

Matplotlib 提供了 violinplot() 函数来绘制小提琴图,可以应用在 MATLAB 样式以及面向对象的绘图方法中。当与 axes 对象一起使用时,语法格式如下:

  • axes.violinplot(dataset, positions, vert=True, widths=0.5, showmeans=False, showextrema=True, showmedians=False, quantiles, points=100, bw_method, *, data)
    dataset:绘制小提琴图的数据序列
    positions: 指定小提琴图位置,默认为:[1, 2, …, n]
    vert:若为 True,它会使小提琴图垂直,否则是水平的。
    widths:最大相对宽度,默认0.5。
    showmeans、showextrema、showmedians:是否显示均值、极值、中位数
    quantiles:指定分位数,0到1之间。
    points:核密度估计点数,默认100。
    bw_method:带宽计算方法,可以是 ‘scott’、'silverman’或者可调用对象。

绘制示例

示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpsnp.random.seed(10)
a1 = np.random.normal(loc=90, scale=20, size=200)
a2 = np.random.normal(70, 25, 200)
a3 = np.random.normal(100, 10, 200)
a4 = np.random.normal(80, 30, 200)fig = plt.figure('Violin example1', figsize=(6, 9))
ax1 = fig.add_subplot(211)
ax1.violinplot([a1, a2, a3, a4])
ax1.set_title('matplotlib.axes.Axes.violinplot() Example')
ax1.grid(axis='y')ax2 = fig.add_subplot(212)
h12 = ax2.violinplot([a1, a2], positions=[1,2], vert=False, showmeans=True)
h3 = ax2.violinplot([a3], positions=[4], vert=False, showmeans=True)
h4 = ax2.violinplot([a4], positions=[6], vert=False, showmeans=True, showmedians=True)h12_color = h12['bodies'][0].get_facecolor().flatten()  # 用不同颜色区分不同的小提琴图
h3_color = h3['bodies'][0].get_facecolor().flatten()
h4_color = h4['bodies'][0].get_facecolor().flatten()h12_patch = mps.Patch(color=h12_color, label='data1 and data2')
h3_patch = mps.Patch(color=h3_color, label='data3')
h4_patch = mps.Patch(color=h4_color, label='data4')
ax2.legend(handles=[h12_patch, h3_patch, h4_patch], loc='center left')  # 给小提琴图加图例的方法plt.show()

上述代码绘制图像如下:

以上。

数据可视化库 matplotlib 入门7——箱形图、小提琴图相关推荐

  1. 数据可视化库 matplotlib 入门 8——绘制文本与数学表达式、图形处理

    Matplotlib 库使用入门8 绘制文本与数学表达式 绘制文本的函数与功能 绘制数学表达式 图像处理 在前面关于 matploblib 的文章中,笔者分别介绍了: matplotlib 库的安装与 ...

  2. python绘制不带颜色曲线图_Python数据可视化库-Matplotlib——折线图,子图绘制

    # coding:utf-8 import pandas as pd import numpy as np from matplotlib import pylab as plt # 导入数据可视化库 ...

  3. [转载] Python数据可视化库-Matplotlib——折线图绘制

    参考链接: Python Matplotlib数据可视化 plot折线图 # coding:utf-8 import pandas as pd import numpy as np from matp ...

  4. Python数据可视化库Matplotlib折线图(一)

    今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...

  5. python可视化库matplotlib_Python数据可视化库-Matplotlib(一)

    今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...

  6. 唐宇迪学习笔记3:Python数据可视化库——Matplotlib

    目录 一.Matplotlib概述 最基本的图 线条格式 线条颜色 颜色与格式结合 二.子图与标注 绘制多个线 指定线条的宽度 自定义参数 子图 给图上加上注释 三.风格设置 ​四.条形图 五.条形图 ...

  7. 手把手教你学Python之Matplotlib绘图(一文掌握数据可视化库-Matplotlib)

    目录 Matplotlib介绍 线形图(折线图) 直方图 条形图 饼状图 散点图 Matplotlib介绍        matplotlib是一个Python 的2D绘图库,提供了一套表示和操作图以 ...

  8. 【星海出品】数据可视化之Matplotlib入门(一)

    官方网站: https://matplotlib.org/ Matplotlib 提供了一个套面向绘图对象编程的 API 接口,能够很轻松地实现各种图像的绘制,并且它可以配合 Python GUI 工 ...

  9. 【数据可视化】Matplotlib 入门到精通学习笔记(超详细)

    数据可视化是什么 如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化. 当使用图表 ...

最新文章

  1. 阿里某新员工感慨:入职阿里三个月生活一团糟,想辞职休息
  2. 向安卓模拟器中添加文件
  3. java配置运行环境和配置
  4. go编译库给c语言函数返回值,go语言 函数return值的几种情况
  5. java 判断对象为控制_Java流程控制
  6. 关于js中的判断数组为空的问题
  7. 又一个停止申请后才知道的功能?QQ至尊保服务“下线” 已试运营三年
  8. H3C 模拟器 防火墙开启Web功能
  9. 1.nodejs介绍
  10. python+opencv打开摄像头、拍摄指定次数的照片_python+openCV调用摄像头拍摄和处理图片的实现...
  11. 通俗易懂的理解BiLSTM-CRF模型中的CRF层
  12. java 视频截图_获取视频截图
  13. HDU 2079 (母函数)
  14. 关于STC单片机“假死”状态的判别和处理方法
  15. 谷歌SEO优化入门:Google SEO优化方法(2022最新)
  16. 如何从 SQL Server 中的 SELECT 更新?
  17. 关闭计算机网络重启功能,如何按计划关闭或重启计算机
  18. html 组件化 编辑器,SpreadJS V14.0发布:组件化编辑器+数据透视表
  19. ipad iphone开发_如何在iPhone或iPad上取消应用订阅
  20. CAT Caterpillar ET is really a exceptional obd2 solution

热门文章

  1. 2022新OneTool多平台云助手源码下载+修复版
  2. 安豆苗:轻量级Android手机管理工具
  3. java多态方法调用_java 多态调用
  4. DPDK学习(一)DPDK简介
  5. 普华linux技术特点,来中标普华Linux专区测试一下你的Linux水平(之四)!
  6. 机器学习(十五)异常检测
  7. python itertools_python之itertools
  8. 基于exoplayer播放器的高斯模糊视频滤镜,整合aar文件,给伸手党
  9. zabbix编译解决ldap问题
  10. 在Word中如何删除顽固的空白页