编程 数据可视化之 pyecharts 可视化 || 绘制箱图

2024-11-19 10:06:29 +0800 CST views 869

数据可视化之 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_xaxisadd_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,我们可以轻松创建美观、交互性强的箱线图,以满足数据分析和展示的需求。

复制全文 生成海报 数据可视化 统计分析 Python编程

推荐文章

pin.gl是基于WebRTC的屏幕共享工具
2024-11-19 06:38:05 +0800 CST
html流光登陆页面
2024-11-18 15:36:18 +0800 CST
php腾讯云发送短信
2024-11-18 13:50:11 +0800 CST
Rust 高性能 XML 读写库
2024-11-19 07:50:32 +0800 CST
html夫妻约定
2024-11-19 01:24:21 +0800 CST
如何配置获取微信支付参数
2024-11-19 08:10:41 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
2024年公司官方网站建设费用解析
2024-11-18 20:21:19 +0800 CST
在 Vue 3 中如何创建和使用插件?
2024-11-18 13:42:12 +0800 CST
OpenCV 检测与跟踪移动物体
2024-11-18 15:27:01 +0800 CST
windows下mysql使用source导入数据
2024-11-17 05:03:50 +0800 CST
程序员茄子在线接单