Fork me on GitHub

pyecharts-10-箱型图绘制

Pyecharts-10-绘制箱型图

本文中介绍的是如何利用pyecharts绘制箱型图。由于箱线图不像柱状图、折线图那样简单常见,许多人都对它敬而远之。希望通过本文的学习,能够使得箱线图也可以变得“平易近人”。

  • 两种数据
    • 连续型数据
    • 离散型数据
  • 箱型图介绍
  • 5个统计量
  • 绘图

常见的两种数据

在数值型数据中,常见的数据类型有两种:连续型数据和离散型数据,分别解释为:

连续型数据

连续型数据:在一定区间内可以任意取值的变量叫连续变量,其数值是连续不断的。

例如,人的身高、体重,尺寸大小等,其数值只能用测量或计量的方法取得。可视化这类数据的图表主要有箱形图和直方图

离散型数据

离散型数据:数值只能用自然数或整数单位计算的则为离散变量。

例如,企业个数,职工人数,设备台数等,只能按计量单位数计数,数值一般用计数方法取得。大多数图表可视化的都是这类数据,比如柱状图、折线图等。

什么是箱型图

发明者

箱图的发明者John Tukey。Tukey先生1915年出生于美国麻省的新贝德福德。他22岁的时候在布朗大学获得了硕士学位,之后又在普林斯顿大学拿到了化学博士。

有趣的是,他并没有直接开始让他青史留名的统计学工作,而是在二战期间进入了火控研究室,在那里,大量武器相关的研究最终都转而需要先解决统计学问题。从此,Tukey改变了自己的人生方向,一代统计学大师即将出现。

箱型图

箱线图(Boxplot)也称箱须图(Box-whisker Plot),是利用数据中的五个统计量:最小值、第一四分位数中位数、第三四分位数与最大值来描述数据的一种方法。其主要作用:

  • 它可以粗略地看出数据是否具有有对称性
  • 显示数据分布的分散程度等信息,特别可以用于对几个样本的比较。
  • 反映一组或多组连续型定量数据分布的中心位置和散布范围
  • 分析不同类别数据各层次水平差异,还能揭示数据间离散程度、异常值、分布差异等

5个统计量

箱型图中存在5个统计量,它们分别是:

  • 最小值
  • 下四分位数Q1
  • 中位数
  • 上四分位数Q3
  • 最大值

特点

箱型图的最大特点就是不受异常值的影响,能够准确稳定地描绘出数据的离散分布情况,同时也利于数据的清洗。

如果数据中存在异常值,箱型图会自动识别为异常

绘图

官网demo:https://gallery.pyecharts.org/#/Boxplot/README

导入库

1
2
3
4
5
6
7
8
9
from pyecharts.globals import CurrentConfig, OnlineHostType   # 事先导入,防止不出图
from pyecharts import options as opts
from pyecharts.charts import Boxplot
from pyecharts.faker import Faker
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType

import pandas as pd
import numpy as np

模拟数据

1
2
3
4
5
6
x =['class1','class2','class3']

y1 = np.random.randint(0,100,10).tolist()
y2 = np.random.randint(0,100,10).tolist()
y3 = np.random.randint(0,100,10).tolist()
y4 = np.random.randint(0,100,10).tolist()

绘图

原始数据必须放在一个列表中

1
2
3
4
5
6
7
8
c = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

c.add_xaxis(x) # x轴标记
c.add_yaxis("成绩对比",c.prepare_data([y1,y2])) # y1,y2,y3,y4本身就是列表,还需要放在列表中
c.add_yaxis("成绩对比",c.prepare_data([y3,y4]))
c.set_global_opts(title_opts=opts.TitleOpts(title="成绩对比"))

c.render_notebook()

采用链式调用的方式:

1
2
3
4
5
6
7
8
9
10
11
# 链式调用

c = (
Boxplot()
.add_xaxis(["class1","class2"]) # x轴标记
.add_yaxis("A",c.prepare_data([y1,y2])) # y1,y2,y3,y4本身就是列表,还需要放在列表中
.add_yaxis("B",c.prepare_data([y3,y4]))
.set_global_opts(title_opts=opts.TitleOpts(title="成绩对比"))
)

c.render_notebook()

本文标题:pyecharts-10-箱型图绘制

发布时间:2020年11月28日 - 19:11

原始链接:http://www.renpeter.cn/2020/11/28/pyecharts-10-%E7%AE%B1%E5%9E%8B%E5%9B%BE%E7%BB%98%E5%88%B6.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea