Matplotlib 绘制箱线图

(一) Matplotlib 绘制柱状图
(二) Matplotlib 绘制箱线图


参考文献:
1.https://www.cnblogs.com/shanger/p/13041426.html
2.https://blog.csdn.net/weixin_44613728/article/details/115190556

Matplotlib 绘制箱线图

  • Matplotlib 绘制箱线图
  • 一、 plt.boxplot() 参数详解
  • 二、 示例
    • 1. 绘制多个分组箱线图
    • 2. 在多个分组箱线图上叠加散点图

一、 plt.boxplot() 参数详解

Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数。

plt.boxplot(x,    # 指定要绘制箱线图的数据;notch=None,    # 是否是凹口的形式展现箱线图,默认非凹口;sym=None,    # 指定异常点的形状,默认为+号显示;vert=None,    # 是否需要将箱线图垂直摆放,默认垂直摆放;whis=None,    # 指定上下须与上下四分位的距离,默认为1.5倍的四分位差;positions=None,    # 指定箱线图的位置,默认为[0,1,2…];widths=None,    # 指定箱线图的宽度,默认为0.5;patch_artist=None,    # 是否填充箱体的颜色;bootstrap=None,    #usermedians=None,    #conf_intervals=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,    # 设置须的属性,如颜色、粗细、线的类型等manage_xticks=True,    #autorange=False,    #zorder=None,    #hold=None,    #data=None)    #

二、 示例

1. 绘制多个分组箱线图

plt.boxplot(x,…)中的 x 是[ [1, 2, 3], [1,2,3,4,5], [8,9] ]格式的,即3个箱线图各自的分组数据。
参数 positions=(1,1.4,1.8,2.8,3.2,3.6,4.6,5,5.4):将同一组的三个箱间隔设置为0.4,不同组间隔设为1,widths=0.3:每个箱宽度为0.3

#...准备数据等代码略...
bias = []for j in range(0,3):for t in range(0,3):bias.append(list(Bias[t][j]))#...代码略...fig = plt.figure()ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])ax.set_ylabel('偏差Bias')ax.set_xlabel('物候提取算法')#(0.2,0.2,0.2) 分别为该颜色的RGB值,(均为0~1的数据)color_list = [(0.2, 0.2, 0.2), (0.2*2, 0.2*2, 0.2*2), (0.2*4, 0.2*4, 0.2*4), (0.2, 0.2, 0.2), (0.2*2, 0.2*2, 0.2*2), (0.2*4, 0.2*4, 0.2*4), (0.2, 0.2, 0.2), (0.2*2, 0.2*2, 0.2*2), (0.2*4, 0.2*4, 0.2*4)]bp = plt.boxplot(bias,patch_artist=True,widths=0.3,positions=(1,1.4,1.8,2.8,3.2,3.6,4.6,5,5.4),showmeans=True)# 将9个箱分别上色
for patch, color in zip(bp['boxes'], color_list):patch.set_facecolor(color)
ax.set_ylabel('偏差Bias')ax.set_xlabel('物候提取算法')# 替换横坐标x的值x_position = [1, 2.8, 4.6]x_position_fmt = ["AG算法", "SG算法", "DL算法"]# 第一个参数为显示位置,第二个参数为显示的值plt.xticks([i + 0.8 / 2 for i in x_position], x_position_fmt)labels = ["CSIF数据集","GOMESIF数据集","GOSIF数据集"]plt.legend(bp['boxes'], labels, loc='best')  # 绘制表示框,右下角绘制# plt.savefig(fname="pic.png", figsize=[10, 10])#显示网格plt.grid(linestyle="--", alpha=0.5)  # 绘制图中虚线 透明度0.3plt.show()

运行结果:

2. 在多个分组箱线图上叠加散点图

参考文献:
1.https://blog.csdn.net/weixin_40787712/article/details/123516154

使用 “zorder=2”这样的确定叠加的图层的先后次序,数字越大,越后。

#...准备数据等代码略...
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
# 画2行3列的子图
ax1 = plt.subplot(2, 3, 1)  # 海北站SOS箱线图
# 准备数据
bias = []
for j in range(0, 3):for t in range(0, 3):bias.append(list(Bias[t][j][0][0:7]))
print(bias,'\n')
PlotBiasGndTiResu(bias, ax1, "lower right")
ax1.set_title('海北站SOS')
ax1.set_ylabel('残差')
# 将箱线图统计的所有点绘制到图上
# spotx是各个箱线图所有点的横坐标
spotx = [[1,1,1,1,1,1,1],[1.4,1.4,1.4,1.4,1.4,1.4,1.4],[1.8,1.8,1.8,1.8,1.8,1.8,1.8],[2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8],[3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2],[3.6,3.6,3.6,3.6,3.6,3.6,3.6],[4.6,4.6,4.6,4.6,4.6,4.6,4.6],[5,5,5,5,5,5,5],[5.4,5.4,5.4,5.4,5.4,5.4,5.4]]
for j in range(0, 3):for t in range(0, 3):#点的大小:s=10,画图层的先后:zorder=2,数字越大越后画plt.scatter(spotx[j*3+t],bias[j*3+t], c='black', s=10, zorder=2)
plt.show()
#...其它子图代码略....def PlotBiasGndTiResu(bias, ax, loca):# plt.boxplot(x,...)中的 x 是[ [1, 2, 3], [1,2,3,4,5], [8,9] ]格式的,即3个箱线图各自的分组数据。
# 参数 positions=(1,1.4,1.8,2.8,3.2,3.6,4.6,5,5.4):将同一组的三个箱间隔设置为0.4,不同组间隔设为1,widths=0.3:每个箱宽度为0.3
# 多图层叠加时,控制画图层的先后:zorder=1,数字越大越后画
bp = plt.boxplot(bias, patch_artist=True, widths=0.3,
positions=(1, 1.4, 1.8, 2.8, 3.2, 3.6, 4.6, 5, 5.4),
showmeans=False, medianprops={'lw': 1, 'color': 'black'}, zorder=1,
# 设置异常点属性,如点的形状、填充色和点的大小
flierprops = {'marker':'o','markerfacecolor':'black', 'markersize':3})color_list = ["orange", "cornflowerblue", "deeppink","orange", "cornflowerblue", "deeppink","orange", "cornflowerblue", "deeppink"]
# 将9个箱分别上色
for patch, color in zip(bp['boxes'], color_list):patch.set_facecolor(color)
# 替换横坐标x的值
x_position = [1, 2.8, 4.6]
x_position_fmt = ["AG算法", "SG算法", "DL算法"]
# 第一个参数为显示位置,第二个参数为显示的值
plt.xticks([i + 0.8 / 2 for i in x_position], x_position_fmt)labels = ["CSIF数据集", "GOMESIF数据集", "GOSIF数据集"]
plt.legend(bp['boxes'], labels, loc=loca)  # 绘制表示框,右下角绘制# 显示网格
plt.grid(linestyle="--")

运行结果:

Matplotlib 绘图 (二)相关推荐

  1. 【机器学习】python使用matplotlib进行二维数据绘图并保存为png图片

    端到端机器学习导航: [机器学习]python借助pandas加载并显示csv数据文件,并绘制直方图 [机器学习]python使用matplotlib进行二维数据绘图并保存为png图片 [机器学习]p ...

  2. Matplotlib(二)绘图生命周期

      上篇 python matplotlib入门(一)主要介绍了matplotlib的workflow, 这一篇将主要介绍 matplotlib 绘图的生命周期,只有了解了matplotlib 的内部 ...

  3. python笔记4(矩阵和随机数 matplotlib绘图基础散点图折线图柱状图)

    记录python听课笔记 文章目录 记录python听课笔记 一,矩阵 1.1矩阵创建 1.2矩阵运算 矩阵的乘法 矩阵转置T 矩阵求逆I 二,随机数 2.1随机数模块 numpy.random 2. ...

  4. 16个matplotlib绘图实用小技巧!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 本文主要 16 个 Matplotlib 绘图实用的小技巧. 1. 添加标题-ti ...

  5. Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  6. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  7. Matplotlib 绘图秘籍

    原文:Matplotlib Plotting Cookbook 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN ...

  8. Python+matplotlib绘图时显示中文的设置方法

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: =================== 在使用Python+mat ...

  9. python ppt 绘图_Python数据分析-Matplotlib绘图基础

    本文结构: 一.Matplotlib绘图基础及中文乱码解决 二.如何利用pandas绘图? 三.如何利用notebook制作分析报告? 图形在我们日常生活中无处不在.如果没有可视化,就是一些数字罗列, ...

  10. Python数据可视化之matplotlib绘图教程

    目录 一.快速绘图 1. 折线图 2. 柱状图 3. 饼状图 4. 散点图 5. 图片保存 二.基本设置 1. 图片 2. 坐标轴 3. 刻度 4. 边距 5. 图例 6. 网格 7. 标题 8. 文 ...

最新文章

  1. 使用mysql_fetch_row()以数组的形式返回查询结果
  2. Sentinel 1.5.0 正式发布,引入 Reactive 支持
  3. django 分页功能
  4. 男人对待恋爱的不同阶段......
  5. Linux 文件颜色含义
  6. 网易严选Java开发三面面经:南京黑马java培训怎么样
  7. python绘制图像的参数_图像绘制.draw.line():系统错误:新样式getargs格式,但参数不是tup...
  8. php递归删除空数组,php 递归删除非空文件夹示例
  9. 【转载】C# 中的各种命名规范
  10. HTML - 03 网页元素的属性
  11. Windows获取本地安装软件详细信息(对标卸载程序控制面板)
  12. matlab-基础 复数 实部、虚部、模、共轭、辐角
  13. CAD 偏移和复制、移动的区别
  14. 服务器设计之SEDA架构
  15. 一百行代码实现的HTML5登录页面
  16. react 父组件调用子组件方法--通过 props 实现
  17. 5G的关键技术与所面临的挑战
  18. 超级计算机发展 小记
  19. 互联网快讯:阿里云发布第四代神龙架构;微信支付正式推出品牌视频号;猿辅导加速布局素质教育
  20. 计算机术语alu,计算机术语完全介绍

热门文章

  1. 芯天下8bit MCU
  2. 从零开始实现3D软光栅渲染器 (1) 简介
  3. 首份财报营收增长扭亏为盈,为何怪兽充电的出路依旧“迷雾重重”
  4. SQL 基础知识扫盲
  5. 我写的新闻——Adobe校园行西工大站圆满落幕
  6. java横向导出excel_JavaWeb POI 导出Excel
  7. 霹雳灯双灯c语言程序,单片机霹雳游侠灯源程序
  8. IR-61|1895075-34-9|七甲川吲哚类花菁染料near-infrared fluorophore
  9. 微信小程序开发者工具使用vant组件
  10. 铁矿石再度领跌商品,LPG认沽上涨3倍,MTO季节性上涨2022.6.22