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返回昨天日期的方法
May 13 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python实现的简单hangman游戏实例
Jun 28 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
python实现可视化动态CPU性能监控
Jun 21 Python
Python中常用的内置方法
Jan 28 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
python实现七段数码管和倒计时效果
Nov 23 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
7个关于Python的经典基础案例
Nov 07 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php常用hash加密函数
2014/11/22 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
js验证表单第二部分
2006/11/25 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
Python如何调用外部系统命令
2019/08/07 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
易程科技软件测试笔试
2013/03/24 面试题
运动会通讯稿300字
2014/02/02 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
上班迟到检讨书
2014/09/15 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技
mysql中关键词exists的用法实例详解
2022/06/10 MySQL