100天精通Python(可视化篇)——第96天:Pyecharts绘制多种炫酷箱形图参数说明+代码实战

文章目录

  • 专栏导读
  • 1. 箱形图介绍
    • 1)箱形图介绍
    • 2)怎么看箱型图?
    • 3)解释说明
  • 2. 普通箱型图
  • 3. 水平箱型图
  • 4. 群组箱型图
  • 5. 带异常点的箱型图
  • 书籍推荐

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

1. 箱形图介绍

1)箱形图介绍

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间。箱形图是由首位两个四分位数(Q1,Q3)以及中位数(Q2)组成的,它能够反映出一组数据的基本统计特性,如分布的范围、中位数、变异程度等。

在这里插入图片描述

特点:箱形图是概括性较强的一种图,它能够准确反映出数据的主要特点,包括最大值、最小值、四分位数、中位数和实例数,同时观测异常点。

应用场景:箱形图主要用于比较多组数据的分布情况,它非常适用于表示连续变量的分布和比较,是显著进行数据可视化的一种常用工具。

2)怎么看箱型图?

“盒式图"或叫"盒须图”"箱形图"boxplot(也称箱须图(Box-whiskerPlot)须图又称为箱形图,其绘制须使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同的母体数据时更可表现其差异。

主要包含六个数据节点,将一组数据从大到小排列,分别计算出他的上边缘,上四分位数Q3,中位数,下四分位数Q1,下边缘,还有一个异常值。标示了图中每条线表示的含义,其中应用到了分位值(数)的概念,如下图所示:

在这里插入图片描述

运行结果

3)解释说明

数学层面理解箱形图每个部分的含义(下四分位线,中位数,上四分位数,上限,下限,异常值,极端异常值):

  • 下四分位数:指数据的25%分位点所对应的值(Q1)
  • 中位数:指数据的50%分位点所对应的值(Q2)
  • 上四分位数:指数据的75%分位点所对应的值(Q3)
  • 上限:上限=Q3+1.5*(Q3-Q1)
  • 下限:下限=Q1-1.5*(Q3-Q1)
  • 异常值的判定标准:当变量的数据值大于上限或小于下限时,判定为异常值

计算方法:

  • 1、.数据集:-15, 7, 10, 15, 20, 33, 5
  • 2、按从小到大的顺序对数据集进行排列:-15, 5, 7, 10, 15, 20, 33
  • 3、确定四分位数索引位置的根据公式:1+(n-1)*数据的百分比分位点,在根据索引位置确定索引所对应的数据值(n是数据集的数量 n=6)
    • Q1_position=1+(6-1)*0.25=2.25 (Q1在第二个数和第三个数之间)
    • Q1_value=15+(36-15)*(2.25-2)=20.25
    • Q2_position=1+(6-1)*0.5=3.5 (Q2在第三个数和第四个数之间)
    • Q2_value=36+(39-36)*(3.5-3)=37.5
    • Q3_position=1+(6-1)*0.75=4.75 (Q3在第四个数和第五个数之间)
    • Q3_value=39+(40-39)*(4.75-4)=39.75
    • 上限=39.75+(39.75-20.25)*1.5=69
    • 下限=20.25-(39.75-20.25)*1.5=-9

极端异常值:

  • 极端上限:上限=Q3+3*(Q3-Q1)
  • 极端下限:下限=Q1-3*(Q3-Q1)
  • 极端异常值的判定标准:当变量的数据值大于极端上限或小于极端下限时,判定为极端异常值

2. 普通箱型图

首先,确保已经安装了Pyecharts库。可以使用以下命令进行安装:

!pip install pyecharts

接下来,我们可以按照以下步骤绘制普通箱形图:

  1. 导入所需的库和模块:
from pyecharts.charts import Boxplot
from pyecharts import options as opts
from pyecharts.globals import ThemeType
  1. 创建一个Boxplot对象,并设置主题:
boxplot = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
  1. 添加数据和配置项:
boxplot.add_xaxis(x_data)  # 设置x轴数据
boxplot.add_yaxis(series_name, y_data)  # 设置y轴数据和系列名称
boxplot.set_global_opts(title_opts=opts.TitleOpts(title="普通箱形图"))  # 设置标题
  1. 展示图表:
boxplot.render_notebook()

下面是一个完整的示例代码:

from pyecharts.charts import Boxplot
from pyecharts import options as opts
from pyecharts.globals import ThemeType# 数据
x_data = ["A", "B", "C", "D", "E"]
y_data = [[1, 2, 3, 4, 5, 6, 7, 8, 9],[2, 3, 4, 5, 6, 7, 8, 9, 10],[3, 4, 5, 6, 7, 8, 9, 10, 11],[4, 5, 6, 7, 8, 9, 10, 11, 12],[5, 6, 7, 8, 9, 10, 11, 12, 13]
]
series_name = "数据"# 创建Boxplot对象
boxplot = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))# 添加数据和配置项
boxplot.add_xaxis(x_data)
boxplot.add_yaxis(series_name, boxplot.prepare_data(y_data))
boxplot.set_global_opts(title_opts=opts.TitleOpts(title="普通箱形图"))# 展示图表
boxplot.render_notebook()

运行以上代码,即可在Jupyter Notebook中绘制出普通箱形图。可以根据需要调整数据和配置项,以满足具体需求,运行结果:
在这里插入图片描述

3. 水平箱型图

绘制水平方向箱型图只需要在代码中加上以下两句调转绘制方向即可:

# 设置图表的朝向为水平方向
boxplot.set_global_opts(legend_opts=opts.LegendOpts(orient="vertical"))
boxplot.reversal_axis()

完整源码:

from pyecharts.charts import Boxplot
from pyecharts import options as opts
from pyecharts.globals import ThemeType# 数据
x_data = ["A", "B", "C", "D", "E"]
y_data = [[1, 2, 3, 4, 5, 6, 7, 8, 9],[2, 3, 4, 5, 6, 7, 8, 9, 10],[3, 4, 5, 6, 7, 8, 9, 10, 11],[4, 5, 6, 7, 8, 9, 10, 11, 12],[5, 6, 7, 8, 9, 10, 11, 12, 13]
]
series_name = "数据"# 创建Boxplot对象
boxplot = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))# 添加数据和配置项
boxplot.add_xaxis(x_data)
boxplot.add_yaxis(series_name, boxplot.prepare_data(y_data))
boxplot.set_global_opts(title_opts=opts.TitleOpts(title="普通箱形图"))# 设置图表的朝向为水平方向
boxplot.set_global_opts(legend_opts=opts.LegendOpts(orient="vertical"))
boxplot.reversal_axis()# 展示图表
boxplot.render_notebook()

运行结果:
在这里插入图片描述

4. 群组箱型图

from pyecharts import options as opts
from pyecharts.charts import Boxplot
import random# 生成随机数据
y_data1 = [[random.randint(500, 1000) for _ in range(12)],[random.randint(500, 1000) for _ in range(12)],
]
y_data2 = [[random.randint(100, 500) for _ in range(12)],[random.randint(100, 500) for _ in range(12)],
]c = (Boxplot(init_opts=opts.InitOpts(width="800px", height="500px")) # 创建 Boxplot 对象.add_xaxis(["expr1", "expr2"]) # 设置 x 轴数据.add_yaxis("A组",Boxplot.prepare_data(y_data1)) # 添加第一个 y 轴数据.add_yaxis("B组", Boxplot.prepare_data(y_data2)) # 添加第二个 y 轴数据.set_global_opts(title_opts=opts.TitleOpts(title="群组箱型图")) # 设置全局参数
)# 在 Jupyter Notebook 中展示图表
c.render_notebook()

运行结果:
在这里插入图片描述

5. 带异常点的箱型图

1、导入相关库:在Jupyter Notebook中,需要导入Pyecharts和相关的其他库。可以使用以下代码导入所需的库:

from pyecharts import options as opts
from pyecharts.charts import Boxplot
from pyecharts.commons.utils import JsCode

2、创建箱型图对象:通过创建Boxplot对象来生成箱型图,并设置相关的属性。可以使用链式调用方法来设置属性。以下是一个示例:

boxplot = (Boxplot().add_xaxis(x_data).add_yaxis("boxplot", y_data).set_global_opts(title_opts=opts.TitleOpts(title="带异常点的箱型图"),xaxis_opts=opts.AxisOpts(name="x轴"),yaxis_opts=opts.AxisOpts(name="y轴"),)
)

其中,x_data是一个列表,包含了每个箱型图的x轴标签;y_data是一个二维列表,每个子列表包含了每个箱型图的数据。

3、设置异常点:可以通过add_yaxis方法的第二个参数设置异常点。以下是一个示例:

.add_yaxis("boxplot",y_data,tooltip_opts=opts.TooltipOpts(formatter=JsCode("function (params) {return params.name + ': ' + params.value[2];}")),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值"),]),
)

在这个示例中,通过设置tooltip_opts属性来自定义提示框的显示内容,通过设置markpoint_opts属性来添加最大值和最小值的标记点。

4、渲染图表:最后,可以使用render_notebook方法将图表渲染并输出到Jupyter Notebook中,如下所示:

boxplot.render_notebook()

完整的示例代码如下:

from pyecharts import options as opts
from pyecharts.charts import Boxplot
from pyecharts.commons.utils import JsCode# 示例数据
x_data = ["A", "B", "C", "D", "E"]
y_data = [[1, 2, 3, 4, 5],[2, 4, 6, 8, 10],[3, 6, 9, 12, 15],[4, 8, 12, 16, 20],[5, 10, 15, 20, 25],
]# 创建箱型图对象
boxplot = (Boxplot().add_xaxis(x_data).add_yaxis("boxplot",y_data,tooltip_opts=opts.TooltipOpts(formatter=JsCode("function (params) {return params.name + ': ' + params.value[2];}")),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值"),]),).set_global_opts(title_opts=opts.TitleOpts(title="带异常点的箱型图"),xaxis_opts=opts.AxisOpts(name="x轴"),yaxis_opts=opts.AxisOpts(name="y轴"),)
)# 渲染图表
boxplot.render_notebook()

运行以上代码,即可在Jupyter Notebook中输出带异常点的箱型图:
在这里插入图片描述

书籍推荐

《Python自动化办公应用大全 》

在这里插入图片描述

本书全面系统地介绍了Python语言在常见办公场景中的自动化解决方案。全书分为5篇21章,内容包括Python语言基础知识,Python读写数据常见方法,用Python自动操作Excel,用Python自动操作Word 与 PPT,用Python自动操作文件和文件夹、邮件、PDF 文件、图片、视频,用Python进行数据可视化分析及进行网页交互,借助ChatGPT轻松进阶Python办公自动化。
本书适合各层次的信息工作者,既可作为初学Python的入门指南,又可作为中、高级自动化办公用户的参考手册。书中大量的实例还适合读者直接在工作中借鉴。

抽奖送书老规矩(不点赞收藏中奖无效):注意记得关注博主不然中奖了还不知道!!!

  • 1. 点赞收藏文章
  • 2. 评论区留言:人生苦短,我用Python!!!(留言才能进入奖池,每人最多留言三条)
  • 3. 周六八点爬虫抽奖5人
  • 当当购买链接 :http://product.dangdang.com/29566495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rust 如何定义[u8]数组?

在Rust中&#xff0c;有多种方式可以定义 [u8] 数组。以下是一些常见的方式&#xff1a; 使用数组字面量初始化数组&#xff1a; let array: [u8; 5] [1, 2, 3, 4, 5];使用 vec! 宏创建可变长度的数组&#xff1a; let mut vec: Vec<u8> vec![1, 2, 3, 4, 5];使用 v…

适配器模式与装饰器模式对比分析:优雅解决软件设计中的复杂性

适配器模式与装饰器模式对比分析&#xff1a;优雅解决软件设计中的复杂性 在软件设计中&#xff0c;我们常常面临着需要将不同接口或类协调工作的情况&#xff0c;同时还要满足灵活性和可扩展性的需求。为了应对这些挑战&#xff0c;适配器模式和装饰器模式应运而生&#xff0c…

IDEA Debug小技巧 添加减少所查看变量、查看不同线程

问题 IDEA的Debug肯定都用过。它下面显示的变量&#xff0c;有什么门道&#xff1f;可以增加变量、查看线程吗&#xff1f; 答案是&#xff1a;可以。 演示代码 代码如下&#xff1a; package cn.itcast.attempt.threadAttempt.attempt2;public class Test {public static …

GFS分布式文件系统

目录 一、GlusterFS简介 二、GlusterFS特点 1.扩展性和高性能 2.高可用性 3.全局统一命名空间 4.弹性卷管理 5.基于标准协议 三、GlusterFS 术语 1.Brick&#xff08;存储块&#xff09; 2.Volume&#xff08;逻辑卷&#xff09; 3.FUSE 4.VFS 5.Glusterd&#xf…

day48-ajax+SSM分页

AjaxSSM分页 非分页版controller及html&#xff1a; 分页模糊查询controller&#xff1a; Postman测试&#xff08;无网页&#xff09;&#xff1a; 分页网页&#xff1a; 分页网页中添加模糊查询&#xff1a; 分页网页中实现添加功能&#xff1a; &#xff08;1&am…

Flutter 状态栏完美攻略

1. 沉浸式状态栏 Scaffold(extendBodyBehindAppBar: true,appBar: AppBar(toolbarHeight: 0,),body: Container(color:Colors.red) ) 2. 状态栏的背景颜色 Scaffold(appBar: AppBar(backgroundColor: Colors.transparent,),body: Container(color:Colors.red) ) 3. 状态栏的…

RabbitMQ 教程 | 第4章 RabbitMQ 进阶

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

【深度学习Week3】ResNet+ResNeXt

ResNetResNeXt 一、ResNetⅠ.视频学习Ⅱ.论文阅读 二、ResNeXtⅠ.视频学习Ⅱ.论文阅读 三、猫狗大战Lenet网络Resnet网络 四、思考题 一、ResNet Ⅰ.视频学习 ResNet在2015年由微软实验室提出&#xff0c;该网络的亮点&#xff1a; 1.超深的网络结构&#xff08;突破1000层&…

b 树和 b+树的理解

项目场景&#xff1a; 图灵奖获得者&#xff08;Niklaus Wirth &#xff09;说过&#xff1a; 程序 数据结构 算法&#xff0c; 也就说我们无时无刻 都在和数据结构打交道。 只是作为 Java 开发&#xff0c;由于技术体系的成熟度较高&#xff0c;使得大部分人认为&#xff1…

留存测试数据,Apipost接口用例详解

接口用例可以在不影响源接口数据的情况下对接口添加多个用例&#xff0c;方便测试并保存测试数据。 创建用例 左侧目录选择接口后进入接口用例页面&#xff0c;点击添加用例 在弹出窗口中修改各种参数。如登录接口&#xff0c;可修改用户名为空&#xff0c;并添加断言。 执行…

数据湖如何为企业带来9%的高增长?可否取代数据仓库?

什么是数据湖&#xff1f; 数据湖是一个集中的存储库&#xff0c;允许您以任何规模存储所有结构化和非结构化数据。您可以按原样存储数据&#xff0c;而不必首先构造数据&#xff0c;并运行不同类型的分析—从仪表板和可视化到大数据处理、实时分析和机器学习&#xff0c;以指…

css滤镜:drop-shadow

一、用法 drop-shadow( offset-x offset-y blur-radius spread-radius color ) offset-x&#xff1a;此参数设置图像的水平偏移。正值将创建右侧的偏移量&#xff0c;负值将创建左侧的偏移量。offset-y&#xff1a;此参数设置图像的垂直偏移。正值创建到底部的偏移量&#xff…

redis命令行设置key过期时间

redis> SET cache_page "www.google.com"OK redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒(integer) 1 redis> TTL cache_page # 查看剩余生存时间(integer) 23 redis> EXPIRE cache_page 30000 # 更新过期时间(integer) 1 redis> T…

简单版本视频播放服务器V4,layui界面

简单版本视频播放服务器V4 前一个版本内容&#xff0c;可以查看 https://blog.csdn.net/wtt234/article/details/131759154 优化内容&#xff1a; 1.返回列表的优化&#xff0c;优化了原来返回空列表名称的问题 2.前端才有layui优化内容 后端&#xff1a; package mainim…

安科瑞AMC200多回路智能电量采集监控装置在隧道中的应用-安科瑞黄安南

1项目背景 河南安阳林州市某高速公路项目是河南省政府主要打造的一项公路建设项目&#xff0c;该项目全长约70公里&#xff0c;起点位于安阳市内&#xff0c;终点位于林州市县。该项目总投资约60亿元人民币&#xff0c;建设工期预计为3年。 该项目的建设旨在缓解当地交通压力…

为高性能计算构建,由亚马逊云科技Amazon Graviton3E驱动的最新实例正式可用

亚马逊云科技宣布两款基于最新一代自研芯片Amazon Graviton3E的新实例Amazon Elastic Compute Cloud&#xff08;Amazon EC2&#xff09;Hpc7g和Amazon EC2 C7gn正式可用。 其中&#xff0c;Hpc7g实例专为计算和网络密集型高性能计算&#xff08;HPC&#xff09;工作负载而构建…

微信小程序配置上传多个u-upload上传

微信小程序配置上传多个u-upload上传 使用的是uView框架 微信小程序配置上传多个u-upload上传图片 场景需求&#xff1a;根据PC端配置项追加图片配置 小程序根据配置的图片数量&#xff0c;图片名称&#xff0c;进行上传图片 难度在于 我们不知道用户会追加多少个图片配置字段 …

git撤销上一次的commit

一行命令 git reset --soft HEAD^如果在vscode上面&#xff0c;就可以

【Leecode】交替合并字符串- join

题目 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 错误1 class Solution:def mergeAlternately(self, w…

C++ 类和对象篇(三) 空类和默认成员函数

目录 一、空类 二、6个默认成员函数 一、空类 1.是什么&#xff1f; 如果一个类中没有显示定义任何成员&#xff0c;简称为空类。 class A {};//一个空类 2.空类中的成员&#xff1f; 空类中真的什么都没有吗&#xff1f; 并不是&#xff0c;任何类在什么都不写时&#xff0c…