箱形图之美:Pyecharts库的高级参数解析与炫酷样式实践

Pyecharts绘制多种炫酷箱形图参数说明+代码实战

引言

箱形图(Box Plot),又称为盒须图,是一种用于显示一组数据分布情况的统计图表。Pyecharts是一个基于Echarts的Python库,可以轻松地绘制各种交互式图表,包括箱形图。本文将介绍Pyecharts库中绘制箱形图的多种炫酷样式,同时详细说明相关参数,并通过实际代码演示实战操作。

安装Pyecharts

在开始之前,确保已安装Pyecharts库。如果没有安装,可使用以下命令进行安装:

pip install pyecharts

绘制基本箱形图

首先,我们将演示如何绘制基本的箱形图。以下是一个简单的示例代码:

from pyecharts.charts import Boxplot
from pyecharts import options as opts

data = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880],
    [960, 940, 960, 940, 880, 800, 850, 880, 900],
    [890, 810, 810, 820, 800, 770, 760, 740],
]

x_axis = ['Category A', 'Category B', 'Category C']

boxplot = (
    Boxplot()
    .add_xaxis(x_axis)
    .add_yaxis("Boxplot", Boxplot.prepare_data(data))
    .set_global_opts(title_opts=opts.TitleOpts(title="Basic Boxplot Example"))
)

boxplot.render("basic_boxplot.html")

在这个例子中,我们定义了三个类别(Category A、Category B、Category C)的数据,并使用Boxplot类绘制了基本的箱形图。通过add_xaxis设置x轴标签,通过add_yaxis添加数据,最后通过set_global_opts设置全局选项,包括标题。
在这里插入图片描述

炫酷箱形图样式

1. 渐变色箱形图

from pyecharts.charts import Boxplot
from pyecharts import options as opts

data = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880],
    [960, 940, 960, 940, 880, 800, 850, 880, 900],
    [890, 810, 810, 820, 800, 770, 760, 740],
]

x_axis = ['Category A', 'Category B', 'Category C']

gradient_boxplot = (
    Boxplot()
    .add_xaxis(x_axis)
    .add_yaxis("Gradient Boxplot", Boxplot.prepare_data(data))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Gradient Boxplot"),
        visualmap_opts=opts.VisualMapOpts(
            is_show=True,
            dimension=1,
            series_index=0,
            min_=min(min(data[0]), min(data[1]), min(data[2])),
            max_=max(max(data[0]), max(data[1]), max(data[2])),
            range_text=["High", "Low"],
            orient="horizontal",
            pos_top="top",
            pos_left="right",
        ),
    )
)

gradient_boxplot.render("gradient_boxplot.html")

在渐变色箱形图中,我们通过visualmap_opts设置了颜色渐变,使箱体的颜色根据数据的大小变化而变化。

2. 半透明箱形图

from pyecharts.charts import Boxplot
from pyecharts import options as opts

data = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880],
    [960, 940, 960, 940, 880, 800, 850, 880, 900],
    [890, 810, 810, 820, 800, 770, 760, 740],
]

x_axis = ['Category A', 'Category B', 'Category C']

transparent_boxplot = (
    Boxplot()
    .add_xaxis(x_axis)
    .add_yaxis("Transparent Boxplot", Boxplot.prepare_data(data))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Transparent Boxplot"),
        visualmap_opts=opts.VisualMapOpts(
            is_show=True,
            dimension=1,
            series_index=0,
            min_=min(min(data[0]), min(data[1]), min(data[2])),
            max_=max(max(data[0]), max(data[1]), max(data[2])),
            range_text=["High", "Low"],
            orient="horizontal",
            pos_top="top",
            pos_left="right",
            is_piecewise=True,
            pieces=[
                {"value": 800, "label": "800以下", "color": "rgba(0,71,255,0.5)"},
                {"value": 900, "label": "800-900", "color": "rgba(0,71,255,0.7)"},
                {"value": 1000, "label": "900-1000", "color": "rgba(0,71,255,0.9)"},
                {"value": 1100, "label": "1000-1100", "color": "rgba(0,71,255,1)"},
            ],
        ),
    )
)

transparent_boxplot.render("transparent_boxplot.html")

在半透明箱形图中,我们通过设置color参数为带有透明度的rgba值,使箱体呈现半透明效果。同时,通过is_piecewisepieces设置颜色分段,以更好地展示数据区间。

3. 自定义箱线位置

from pyecharts.charts import Boxplot
from pyecharts import options as opts

data = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880],
    [960, 940, 960, 940, 880, 800, 850, 880, 900],
    [890, 810, 810, 820, 800, 770, 760, 740],
]

x_axis = ['Category A', 'Category B', 'Category C']

custom_boxplot = (
    Boxplot()
    .add_xaxis(x_axis)
   

 .add_yaxis("Custom Boxplot", Boxplot.prepare_data(data), box_gap=10)
    .set_global_opts(title_opts=opts.TitleOpts(title="Custom Boxplot"))
)

custom_boxplot.render("custom_boxplot.html")

通过设置box_gap参数,我们可以调整箱线之间的间距,使箱体更加紧凑或者间隔开。

进阶应用:箱形图与其他图表的结合

在实际数据分析中,箱形图通常用于展示数据的中位数、上下四分位数等统计指标。然而,为了更全面地呈现数据特征,我们经常需要将箱形图与其他图表结合使用。以下是一个将箱形图与折线图结合的示例:

from pyecharts.charts import Boxplot, Line
from pyecharts import options as opts

data_box = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880],
    [960, 940, 960, 940, 880, 800, 850, 880, 900],
    [890, 810, 810, 820, 800, 770, 760, 740],
]

data_line = [830, 850, 910, 940, 960, 920]

x_axis = ['Category A', 'Category B', 'Category C']

combined_chart = (
    Boxplot()
    .add_xaxis(x_axis)
    .add_yaxis("Boxplot", Boxplot.prepare_data(data_box))
    .set_global_opts(title_opts=opts.TitleOpts(title="Combined Boxplot and Line Chart"))
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="Line Chart",
            type_="value",
            min_=min(data_line),
            max_=max(data_line),
            position="right",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="green")
            ),
        )
    )
)

line_chart = (
    Line()
    .add_xaxis(x_axis)
    .add_yaxis("Line Chart", data_line, yaxis_index=1)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
)

combined_chart.overlap(line_chart).render("combined_chart.html")

在这个例子中,我们使用extend_axis方法在右侧添加了一个与箱形图共享x轴的折线图。通过设置yaxis_index=1,我们让折线图与右侧的y轴关联。这样,我们可以在同一图表中同时展示箱形图和折线图,更全面地了解数据的分布情况。

这种结合不同类型图表的方式可以根据实际需求灵活运用,例如结合散点图、柱状图等,以展示更多数据维度的信息。

在这里插入图片描述

交互式箱形图:添加工具与事件

Pyecharts不仅提供了丰富的图表样式,还支持添加各种交互式工具和事件,使得用户能够更灵活地进行数据探索。以下是一个例子,演示了如何添加工具和事件来增强箱形图的交互性:

from pyecharts.charts import Boxplot
from pyecharts import options as opts

data = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880],
    [960, 940, 960, 940, 880, 800, 850, 880, 900],
    [890, 810, 810, 820, 800, 770, 760, 740],
]

x_axis = ['Category A', 'Category B', 'Category C']

interactive_boxplot = (
    Boxplot()
    .add_xaxis(x_axis)
    .add_yaxis("Interactive Boxplot", Boxplot.prepare_data(data))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Interactive Boxplot"),
        toolbox_opts=opts.ToolboxOpts(is_show=True, feature={"saveAsImage": {}}),
        tooltip_opts=opts.TooltipOpts(
            is_show=True, trigger="item", formatter="{a} <br/>{b} : {c}"
        ),
    )
    .set_series_opts(
        markpoint_opts=opts.MarkPointOpts(
            data=[
                {"type": "max", "name": "最大值"},
                {"type": "min", "name": "最小值"},
            ]
        ),
        markline_opts=opts.MarkLineOpts(
            data=[
                {"type": "average", "name": "平均值"},
            ]
        ),
    )
)

interactive_boxplot.render("interactive_boxplot.html")

在这里插入图片描述

在这个例子中,我们通过toolbox_opts添加了保存为图片的工具,并通过tooltip_opts设置了鼠标悬停时的提示信息格式。同时,通过set_series_opts添加了标记点(最大值、最小值)和标记线(平均值),使得这些关键点更加直观。

结尾

通过本文的介绍和示例代码,读者可以学到如何使用Pyecharts库绘制多种炫酷样式的箱形图,以及如何与其他图表结合使用,以及如何增加交互性工具和事件。这些技巧可以使数据可视化更加生动和丰富,提高数据分析的效果。

在实际项目中,根据具体的数据和分析目的,可以选择合适的箱形图样式和交互方式,以更好地传达数据的含义。希望本文能够帮助读者更好地掌握Pyecharts库的箱形图绘制功能,为数据可视化提供更多可能性。祝愿大家在数据分析和可视化的路上取得更多的成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/359026.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试相关|常见试题 or 易错题集合

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注、&#x…

问卷发放实战指南:提高问卷回收率与数据质量的技巧

进行问卷调查分为四步&#xff1a;制作问卷、发放问卷、收集问卷、分析问卷。其中&#xff0c;发放问卷起到了关键性的作用。他关乎到我们后续收集问卷是否顺利&#xff0c;收集到的问卷数据是否具备真实性和有效性。那么&#xff0c;怎么有效地进行问卷发放呢&#xff1f; ​…

STM32通用定时器、计数器

时间记录&#xff1a;2024/1/30 一、时钟介绍&#xff08;TIM2-TIM5&#xff09; &#xff08;1&#xff09;通用定时器时钟频率介绍 内部时钟AHB为72MHz&#xff0c;经过APB1预分频器2分频变为36MHz&#xff0c;TIMxClk定时器时钟由时钟树可以看出&#xff0c;如果APB1预分…

实现SERVLET生命周期事件

实现SERVLET生命周期事件 问题陈述 David Wong是Smart Software Developers的管理员,他希望创建一个应用程序在日志中记录请求和上下文对象初始化及向上下文对象添加属性的时间。同时,该应用程序应该还能在日志中记录删除上下文对象的属性及销毁请求和上下文时的时间。 解决方…

Python 因果推断(上)

引言 原文&#xff1a;causal-methods.github.io/Book/Introduction.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 作者&#xff1a;Vitor Kamada 电子邮件&#xff1a;econometrics.methodsgmail.com 最后更新日期&#xff1a;2020 年 8 月 15 日 这本书是使…

live2D学习:做好让图片动起来的准备

做好让图片动起来的准备https://www.bilibili.com/video/BV1JE411Y7Te?p2&vd_source124076d7d88eee393a1d8bf6fc787efa 把psd文件通过菜单栏的“打开文件”进行导入或直接把psd文件拖到Live2D Cubism Editor 4.0的面板中 网格 我们在点击图像的一部分时&#xff0c;会出现…

vmware安装ubuntu server22.04

下载ubuntu https://cn.ubuntu.com/download 安装vmware 安装 选择自定义硬件&#xff0c;删除打印机和声卡 选择ubuntu镜像 关闭&#xff0c;完成 开启虚拟机 空格选择minimized 重启输入账号密码登录 查看Ip地址使用xshell链接 我看时区不对想修改…

MKRZero通过I2S读取SPH0645音频数据

文章目录 简介实验准备接线定义示例程序实验现象总结 简介 SPH0645LM4H-B 是一款微型、低功耗、并且具有 I2S 数字输出的底部端口麦克风。I2S 接口简化了系统集成&#xff0c;并允许与数字处理器、应用处理器和微控制器直接互连。 SPH0645LM4H-B 无需外部音频编解码器&#xf…

测试开发之路--Flask 之旅 (三):数据库

背景 通过前两次的努力&#xff0c;我们对环境有了增删查改以及部署和查看日志的能力。 现在已经处于将就可用的状态。但其实还差了很重要的东西&#xff0c;就是权限的管理。 因为不能说每个用户上来都能随便的重启和删除环境吧&#xff0c;太容易出事故了。所以我们想起码有…

我在代码随想录|写代码Day20之二叉树-700. 二叉搜索树中的搜索,98. 验证二叉搜索树,530.二叉搜索树的最小绝对差

学习目标&#xff1a; 博主介绍: 27dCnc 专题 : 数据结构帮助小白快速入门 &#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d; ☆*: .&#xff61;. o(≧▽≦)…

研发人员如何做好日常工作的稳定性保障

一、前言 二、稳定性介绍 三、实际操作流程 1、需求分析阶段 2、设计阶段 2、1备选架构 2、2方案设计 2、3 架构设计 2、4设计的checklist 2、5的checklist 3、开发联调 4、自测环节 5、上线前环节 6、上线后的验收和复盘 四、稳定性、效率、成本之间的考量 五、…

教你一招轻松把模糊的照片变高清

亲爱的朋友们&#xff0c;你们是否也曾经遇到过这样的问题——精心拍摄的照片或珍藏已久的图片突然变得模糊不清&#xff0c;让人心情郁闷&#xff1f;别担心&#xff0c;我发现了解决这个问题的秘诀&#xff01;借助一些专业的图片修复工具&#xff0c;那些模糊的瞬间可以重新…

第 8 章:Linux中使用时钟、计时器和信号

在本章中&#xff0c;我们将开始探索Linux环境中可用的各种计时器。随后&#xff0c;我们将深入了解时钟的重要性&#xff0c;并探讨UNIX时间的概念。接下来&#xff0c;我们将揭示在Linux中使用POSIX准确测量时间间隔的方法。之后&#xff0c;我们将进入std::chrono的领域&…

05 SB3之Spring Initializr+运行方式+自动配置原理(TBD)

1. 使用IDEA内置Spring Initializr 生成SB项目 最上方Server URL可以选择借助哪个平台生成, 可选阿里云 作为对比 , 官方可选版本最旧为3.1.18 ; 阿里云可选最新版本为3.0.2 本次选择3.1.8版本, 并且添加Spring Web依赖(包括RESTful / Spring MVC/)和Lombok依赖 生成后端项目…

1 月 29日算法练习-二分法

二分法是一种高效的查找方法&#xff0c;它通过将问题的搜索范围一分为二&#xff08;两边具有明显的区别&#xff09;&#xff0c;迭代地缩小搜索范围&#xff0c;直到找到目标或确定目标不存在。 二分法适用于有序数据集合&#xff0c;并且每次迭代可以将搜索范围缩小一半。 …

【GAMES101】Lecture 12 阴影 Shadow Mapping

这里是光栅化的最后一部分&#xff0c;讲这个光栅化里面怎么实现这个阴影 实际上阴影就是光源看不到的地方但是是我们能看到的地方&#xff0c;那这个地方就应该有阴影&#xff0c;那具体怎么做呢&#xff0c;这个就叫做Shadow Mapping&#xff0c;分两步做 我们之前说过这个解…

初识attention

近年来&#xff0c;attention机制在机器视觉和机器翻译领域受到了广泛的关注&#xff0c;有很多文章都是融合attention来提高性能。attention受启发于人类的视觉系统&#xff0c;最先应用于序列化的机器翻译(NLP)后又推广到计算机视觉中&#xff0c;本篇文章就来简单学习一下at…

[GN] 设计模式——面向对象设计原则概述

文章目录 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 面向对象设计原则概述 单一职责原则 一个类只负责一个功能领域中的相应职责 类…

JavaScript DOM属性和方法之attribute属性对象

在HTML的DOM中&#xff0c;attribute对象表示HTML属性。HTML属性始终属于HTML元素&#xff0c;它在DOM节点中被称为属性节点。在DOM中&#xff0c;NamedNodeMap对象表示元素属性节点的无序集合&#xff0c;我们可以通过指定的索引访问指定的属性。通过element对象的attribute属…

【Leetcode】两数之和

目录 题目&#xff1a; 解法1&#xff1a;暴力双for 1.想到的第一种方法两for循环解 复杂度分析 解法2&#xff1a;hash表 总结&#xff1a; 笔记&#xff1a; 题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…