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

news2024/12/23 9:23:06

文章目录

  • 专栏导读
  • 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中输出带异常点的箱型图:
在这里插入图片描述

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

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

相关文章

Docker实战总结

Docker 官方文档地址:https://www.docker.com/get-started 中文参考手册:https://docker_practice.gitee.io/zh-cn/ 1.什么是 Docker 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are…

线性回归--波士顿房屋价格预测

一、波士顿房屋价格预测代码 import sysimport pandas as pd import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt import matplotlib as mpt from sklearn.model_selection import train_test_split##加载数据 datapd.re…

Druid工作原理

Druid工作原理-连接池初始化流程 标题 Druid工作原理-获取连接流程: 连接回收:

类定义练习

运行代码: //类定义练习 #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h" //定义类 class Person { private:string first_n…

直流有刷驱动板电流电压采集

直流有刷驱动板电流电压采集 电流采集会涉及到电流环的使用。 #include "./adc/bsp_adc.h" #include ".\motor_control\bsp_motor_control.h" #include "./led/bsp_led.h" #include "./usart/bsp_debug_usart.h"__IO uint16_t…

vue-element-admin深入系列-数据Mock

本文介绍 vue-element-admin 如何使用 MockJS 实现数据Mock,毕竟对于一个合格的前端来讲,自己能Mock数据是必须的: 自给自足,不用依赖服务端接口。毕竟环境问题是个大问题,更何况环境不稳定是常态,再加上偶尔服务端的数据格式变化,问题就更复杂。 数据复杂,页面复杂时。…

HackTheBox - 学院【CPTS】复习6 - Active Directory

ACTIVE DIRECTORY ENUMERATION & ATTACKS 这个模块其实与thm的AD教程相比,还是thm更适合刚开始接触AD以及学习从枚举到持久化的全阶段(红队)。而htb学院这个模块更注重于枚举和各种攻击手段,有点纯渗透的风格,弱化…

通过动态IP解决网络数据采集问题

动态地址的作用 说到Python网络爬虫,很多人都会遇到困难。最常见的就是爬取过程中IP地址被屏蔽。虽然大部分都是几个小时内自动解封的,但这对于分秒必争的python网络爬虫来说,是一个关键性的打击!当一个爬虫被阻塞时,…

Java内部类笔记

1.为什么使用内部类? 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现, 对于内部类都没有影响 1.1.使用内部类最大的优点…

TCP/IP基础知识笔记

应用层:为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。 应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。 传输层:为应用层提供网络支持。 *TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可…

pytorch深度学习逻辑回归 logistic regression

# logistic regression 二分类 # 导入pytorch 和 torchvision import numpy as np import torch import torchvision from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import matplotlib.pyplot as …

(简单)剑指Offer II 056. 二叉搜索树中两个节点的和 Java

方法一:深度优先搜索哈希表 使用深度优先搜索的方式遍历整棵树,用哈希表记录遍历过的节点的值 对于一个值为x的节点,检查哈希表中是否存在k-x即可。如果存在对应的元素,那么我们就可以在该树上找到两个节点的和为k;否…

河流垃圾检测Y8S

【免费】河流垃圾检测Y8M,只需要OPENCV资源-CSDN文库 采用YOLOV8训练,得到PT模型,然后直接转ONNX,使用OPENCV的DNN,不需要其他依赖,支持C/PYTHON

Hadoop 之 分布式集群配置与使用(三)

Hadoop 之 分布式集群 一.集群实例创建二.配置1.创建三个虚拟机(Anolis)1.修改 HostName2.配置免密登录,配置前 2.配置命名节点1.在 nd1 / nd2 部署 hadoop2.配置 3.查看集群信息 三.测试 一.集群实例创建 以三个 Hadoop 实例创建集群&#…

对战五子棋——网页版

目录 一、项目简介 二、用户模块 1、创建用户实体类 2、编写userMapper接口文件 3、实现userMapper.xml文件 4、对用户密码进行加密 5、实现用户登录功能 6、实现用户注册功能 三、实现用户匹配模块 1、展示用户个人信息 2、匹配请求类 3、匹配响应类 4、创…

郭东白的架构课学习笔笔记(1)

1.架构师的品质 自信和勇气(正确的废话)拥有战略意图,所谓战略意图,就是拥有与其资源和能力极不相称的雄心壮志。使用演绎法寻找架构原理,而不是归纳法。 2.如何提升自己的架构能力 向身边比自己厉害的优秀架构师或…

【网络安全带你练爬虫-100练】第14练:文件内容的读取、取出

目录 一、目标1:把文件内容遍历取出 二、目标2:把文件内容全部取出 三、网络安全O 一、目标1:把文件内容遍历取出 (1)如果文件脚本在不同目录 file_path "path/to/your/file.txt" # 替换为你的文件路径…

【Gradle】Gradle之JVM进程详解

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

【机密计算组织】机密计算联盟

一、简介 1.1 机密计算联盟与成员 2019年8月22日,Linux基金会宣布多家巨头企业组建“机密计算联盟”(Confidential Computing Consortium),该基金将负责对联盟活动进行监督。机密计算联盟专门针对云服务及硬件生态,致…

SpringBoot中注入ServletFilterListener

1.基本介绍 文档:SpringBoot中注入Servlet&Filter&Listener 考虑到实际开发业务非常复杂和兼容问题,SpringBoot支持将Servlet、Filter、Listener注入spring容器中,成为Spring Bean也就是说,SpringBoot开放了和原生WEB组件…