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使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
python xml解析实例详解
Nov 14 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python实现转圈打印矩阵
Mar 02 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
Django基础知识 URL路由系统详解
Jul 18 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python使用Pandas库常见操作详解
Jan 16 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
jQuery实现评论模块
2020/08/19 jQuery
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
python使用tornado实现简单爬虫
2018/07/28 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
python 修改本地网络配置的方法
2019/08/14 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
探亲假请假条
2014/04/11 职场文书
小区推广策划方案
2014/06/06 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
芙蓉镇观后感
2015/06/10 职场文书
新入职员工工作总结
2015/10/15 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android