Python可视化神器pyecharts之绘制箱形图


Posted in Python onJuly 07, 2022

箱形图

概念

后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象。

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

Python可视化神器pyecharts之绘制箱形图

 用处

1.直观明了地识别数据批中的异常值

上文讲了很久的识别异常值,其实箱线图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的耐抗性,多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不会影响箱形图的数据形状,箱线图识别异常值的结果比较客观。由此可见,箱线图在识别异常值方面有一定的优越性。

2.利用箱线图判断数据批的偏态和尾重

对于标准正态分布的样本,只有极少值为异常值。异常值越多说明尾部越重,自由度越小(即自由变动的量的个数);

而偏态表示偏离程度,异常值集中在较小值一侧,则分布呈左偏态;异常值集中在较大值一侧,则分布呈右偏态。

3.利用箱线图比较几批数据的形状

同一数轴上,几批数据的箱线图并行排列,几批数据的中位数、尾长、异常值、分布区间等形状信息便昭然若揭。如上图,可直观得看出第三季度各分公司的销售额大体都在下降。

箱形图系列模板

第一个箱形图

说实话这类图形的绘制,如果不懂专业的知识可能也无法理解,对于如何深层次的理解这个图形的具体含义,请移步到其他专栏,我会详细介绍,这里就不做过多的解释了。

from pyecharts import options as opts
from pyecharts.charts import Boxplot
v1 = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980],
[960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790],
]
v2 = [
[890, 810, 810, 820, 800, 770, 760, 740, 750, 760, 910, 920],
[890, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870, 870],
]
c = Boxplot()
c.add_xaxis(["expr1", "expr2"])
c.add_yaxis("A", c.prepare_data(v1))
c.add_yaxis("B", c.prepare_data(v2))
c.set_global_opts(title_opts=opts.TitleOpts(title="标题"))
c.render("简单示例.html")
print(c.prepare_data(v1))

Python可视化神器pyecharts之绘制箱形图

复杂一点的图例

import pyecharts.options as opts
from pyecharts.charts import Grid, Boxplot, Scatter

y_data = [
[
850,
740,
900,
1070,
930,
850,
950,
980,
980,
880,
1000,
980,
930,
650,
760,
810,
1000,
1000,
960,
960,
],
[
960,
940,
960,
940,
880,
800,
850,
880,
900,
840,
830,
790,
810,
880,
880,
830,
800,
790,
760,
800,
],
[
880,
880,
880,
860,
720,
720,
620,
860,
970,
950,
880,
910,
850,
870,
840,
840,
850,
840,
840,
840,
],
[
890,
810,
810,
820,
800,
770,
760,
740,
750,
760,
910,
920,
890,
860,
880,
720,
840,
850,
850,
780,
],
[
890,
840,
780,
810,
760,
810,
790,
810,
820,
850,
870,
870,
810,
740,
810,
940,
950,
800,
810,
870,
],
]
scatter_data = [650, 620, 720, 720, 950, 970]

box_plot = Boxplot()

box_plot = (
box_plot.add_xaxis(xaxis_data=["expr 0", "expr 1", "expr 2", "expr 3", "expr 4"])
.add_yaxis(series_name="", y_axis=box_plot.prepare_data(y_data))
.set_global_opts(
title_opts=opts.TitleOpts(
pos_left="center", title="Michelson-Morley Experiment"
),
tooltip_opts=opts.TooltipOpts(trigger="item", axis_pointer_type="shadow"),
xaxis_opts=opts.AxisOpts(
type_="category",
boundary_gap=True,
splitarea_opts=opts.SplitAreaOpts(is_show=False),
axislabel_opts=opts.LabelOpts(formatter="expr {value}"),
splitline_opts=opts.SplitLineOpts(is_show=False),
),
yaxis_opts=opts.AxisOpts(
type_="value",
name="km/s minus 299,000",
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
)
.set_series_opts(tooltip_opts=opts.TooltipOpts(formatter="{b}: {c}"))
)

scatter = (
Scatter()
.add_xaxis(xaxis_data=["expr 0", "expr 1", "expr 2", "expr 3", "expr 4"])
.add_yaxis(series_name="", y_axis=scatter_data)
.set_global_opts(
title_opts=opts.TitleOpts(
pos_left="10%",
pos_top="90%",
title="upper: Q3 + 1.5 * IQR \nlower: Q1 - 1.5 * IQR",
title_textstyle_opts=opts.TextStyleOpts(
border_color="#999", border_width=1, font_size=14
),
),
yaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(is_show=False),
axistick_opts=opts.AxisTickOpts(is_show=False),
),
)
)
grid = (
Grid(init_opts=opts.InitOpts(width="1200px", height="600px"))
.add(
box_plot,
grid_opts=opts.GridOpts(pos_left="10%", pos_right="10%", pos_bottom="15%"),
)
.add(
scatter,
grid_opts=opts.GridOpts(pos_left="10%", pos_right="10%", pos_bottom="15%"),
)
.render("第一个箱形图.html")
)

Python可视化神器pyecharts之绘制箱形图

其实对于这个图形的绘制我个人觉得掌握好一定技巧,绘制图形并不难,主要是你要知道一定数据分析方法,不然空谈数据可视也是枉然。

到此这篇关于Python可视化神器pyecharts之绘制箱形图的文章就介绍到这了,更多相关Python绘制箱形图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Python 相关文章推荐
python使用xauth方式登录饭否网然后发消息
Apr 11 Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 Python
python获取多线程及子线程的返回值
Nov 15 Python
tensorflow实现简单逻辑回归
Sep 07 Python
Python匿名函数及应用示例
Apr 09 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
Python imread、newaxis用法详解
Nov 04 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 #Python
Django数据库(SQlite)基本入门使用教程
Jul 07 #Python
Python可视化神器pyecharts之绘制地理图表练习
Django中celery的使用项目实例
Python可视化神器pyecharts绘制地理图表
Python软件包安装的三种常见方法
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 #Python
You might like
PHP中的日期及时间
2006/11/23 PHP
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
vue实例的选项总结
2020/06/09 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
Python中replace方法实例分析
2014/08/20 Python
Python快速从注释生成文档的方法
2016/12/26 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
Python Django搭建网站流程图解
2020/06/13 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
销售总经理岗位职责
2014/03/15 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
网络管理员岗位职责
2015/02/12 职场文书
小学教师节活动总结
2015/03/20 职场文书
六年级数学教学反思
2016/02/16 职场文书