数据可视化之 pyecharts 可视化 || 绘制箱图
1. 什么是箱线图?
箱线图(Box Plot),又称盒须图,是一种用于描述数据分布的统计图形,能够直观展示以下几部分信息:
- 中位数(Median):数据的中间值。
- 第一四分位数(Q1):下四分位数,25% 的数据小于此值。
- 第三四分位数(Q3):上四分位数,75% 的数据小于此值。
- 下限(Lower Whisker):通常为 Q1 - 1.5 * IQR(四分位距)。
- 上限(Upper Whisker):通常为 Q3 + 1.5 * IQR。
- 异常值(Outliers):位于上限和下限之外的数据点。
箱线图能有效显示数据的分布情况、对称性及离群值。
2. 使用 pyecharts 绘制箱线图
接下来,我们将学习如何使用 pyecharts
绘制一个基本的箱线图。
2.1 基本箱线图示例
from pyecharts.charts import Boxplot
from pyecharts import options as opts
# 创建 Boxplot 实例
boxplot = Boxplot()
# 准备数据
x_data = ["类别 A"]
y_data = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880,
1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 960]
]
# 处理数据
y_data_processed = boxplot.prepare_data(y_data)
# 添加数据到图表
boxplot.add_xaxis(x_data)
boxplot.add_yaxis("样本数据", y_data_processed)
# 设置全局选项
boxplot.set_global_opts(
title_opts=opts.TitleOpts(title="基本箱线图示例"),
yaxis_opts=opts.AxisOpts(name="值"),
xaxis_opts=opts.AxisOpts(name="类别")
)
# 渲染图表
boxplot.render("basic_boxplot.html")
说明:
prepare_data
方法用于计算箱线图所需的统计数据。add_xaxis
和add_yaxis
方法用于添加横轴和纵轴数据。set_global_opts
方法设置图表的全局配置,如标题和轴标签。
运行上述代码后,会在当前目录下生成一个名为 basic_boxplot.html
的文件,使用浏览器打开即可查看箱线图。
2.2 自定义箱线图样式
可以通过设置图表的配置项来自定义箱线图的样式,如颜色、线条样式、标签等。
# 自定义箱线图样式
boxplot.set_series_opts(
itemstyle_opts=opts.ItemStyleOpts(
color="#D14A61", # 箱体颜色
border_color="#675bba" # 边框颜色
),
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="average", name="平均值")],
label_opts=opts.LabelOpts(position="end")
)
)
说明:
itemstyle_opts
用于设置箱体的样式。markline_opts
用于添加标志线(如平均值线)。
3. 绘制多组数据的箱线图
如果需要比较多个类别的数据分布,可以在同一图表中添加多个箱线图。
from pyecharts.charts import Boxplot
from pyecharts import options as opts
# 创建 Boxplot 实例
boxplot = Boxplot()
# 准备数据
x_data = ["类别 A", "类别 B", "类别 C"]
y_data = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880,
1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 960],
[960, 960, 960, 940, 940, 880, 880, 880, 860, 720,
720, 840, 850, 850, 780, 810, 840, 840, 830, 790],
[890, 810, 810, 820, 800, 770, 760, 740, 730, 730,
730, 740, 750, 760, 780, 780, 800, 810, 820, 850]
]
# 处理数据
y_data_processed = boxplot.prepare_data(y_data)
# 添加数据到图表
boxplot.add_xaxis(x_data)
boxplot.add_yaxis("样本数据", y_data_processed)
# 设置全局选项
boxplot.set_global_opts(
title_opts=opts.TitleOpts(title="多类别箱线图示例"),
yaxis_opts=opts.AxisOpts(name="值"),
xaxis_opts=opts.AxisOpts(name="类别")
)
# 渲染图表
boxplot.render("multiple_boxplot.html")
运行上述代码,会生成一个包含三个类别的箱线图,可以直观地比较不同类别的数据分布。
4. 在 Jupyter Notebook 中展示图表
如果您使用 Jupyter Notebook,可以直接在笔记本中展示图表。
from pyecharts.globals import CurrentConfig, NotebookType
from pyecharts.charts import Boxplot
from pyecharts import options as opts
# 设置 Notebook 环境
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK
# 创建 Boxplot 实例
boxplot = Boxplot()
# 准备数据
x_data = ["类别 A", "类别 B", "类别 C"]
y_data = [
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880,
1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 960],
[960, 960, 960, 940, 940, 880, 880, 880, 860, 720,
720, 840, 850, 850, 780, 810, 840, 840, 830, 790],
[890, 810, 810, 820, 800, 770, 760, 740, 730, 730,
730, 740, 750, 760, 780, 780, 800, 810, 820, 850]
]
# 处理数据
y_data_processed = boxplot.prepare_data(y_data)
# 添加数据到图表
boxplot.add_xaxis(x_data)
boxplot.add_yaxis("样本数据", y_data_processed)
# 设置全局选项
boxplot.set_global_opts(
title_opts=opts.TitleOpts(title="Jupyter Notebook 中的箱线图"),
yaxis_opts=opts.AxisOpts(name="值"),
xaxis_opts=opts.AxisOpts(name="类别")
)
# 在 Notebook 中渲染图表
boxplot.render_notebook()
在 Jupyter Notebook 中运行上述代码,会直接显示箱线图。
通过 pyecharts
,我们可以轻松创建美观、交互性强的箱线图,以满足数据分析和展示的需求。