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使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
python 根据pid杀死相应进程的方法
Jan 16 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
Python中的TCP socket写法示例
May 11 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
详解Python3 基本数据类型
Apr 19 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 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 PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
javascript replace方法与正则表达式
2008/02/19 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
公司同意接收函
2014/01/13 职场文书
五好党支部事迹材料
2014/02/06 职场文书
银行贷款承诺书
2014/03/29 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
司机工作自我鉴定
2014/09/19 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
董事长岗位职责
2015/02/13 职场文书
郭明义观后感
2015/06/08 职场文书
办公用品管理制度
2015/08/04 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers