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 25 Python
Django框架多表查询实例分析
Jul 04 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
python获取Pandas列名的几种方法
Aug 07 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
python 检测图片是否有马赛克
Dec 01 Python
python requests模块的使用示例
Apr 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
sql注入与转义的php函数代码
2013/06/17 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
Python切片用法实例教程
2014/09/08 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
Python对象与引用的介绍
2019/01/24 Python
python字符串循环左移
2019/03/08 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
python和c语言哪个更适合初学者
2020/06/22 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
大二法英学生职业生涯规划范文
2014/02/27 职场文书
意向书范文
2014/03/31 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
安全教育片观后感
2015/06/17 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书