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

news2024/11/17 11:38:35

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库的箱形图绘制功能,为数据可视化提供更多可能性。祝愿大家在数据分析和可视化的路上取得更多的成功!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bat脚本:批量生成创建数据库的SQL语句

需求来源&#xff1a;使用 Navicat等数据库工具点击“转储SQL文件”会生成一个 xxx.sql 的文件&#xff0c;xxx是导出的数据库名。导出的数据库多了&#xff0c;就会一次性生成很多这样的SQL文件&#xff0c;所以需要写个脚本根据这些SQL脚本文件来批量生成创建数据库的SQL语句…

细谈Java的String类

目录 1. 创建对象的思考 2. 字符串常量池&#xff08;StringTable&#xff09; 3. intern方法 1. 创建对象的思考 下面两种创建String对象的方式相同吗&#xff1f; public static void main(String[] args) {String s1 "hello";String s2 "hello";St…

【数据结构 03】循环队列

一、原理 循环队列从功能角度具有队列的性质&#xff0c;即遵从先进先出原则&#xff0c;但是其存储方式是顺序存储。 循环队列的存储空间大小通常都是固定的&#xff0c;通过前指针和尾指针的移动控制循环队列数据的增删。 特征&#xff1a;顺序存储、先进先出、容量有限&a…

docker打包python镜像全教程

1.目录结构如下 2.使用dockfile安装&#xff1a; FROM python:3.7.7 ADD ./pdf_reader /code # 设置code文件夹是工作目录 WORKDIR /code # 安装支持 RUN pip install -r requirements.txt CMD ["python3", "Api.py"]dockfile最好在linux系统上创建&am…

网络原理-TCP_IP(2)

TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol)".协议如其名,要对数据的传输进行一个详细的控制. TCP协议段格式 源/目的端口号:表示数据从哪个进程来,到哪个进程去. 32位序号/32位确认序号:后面详细讲. 4位TCP报头长度:表示该TCP头部有多少个32位…

恒创科技:云服务器公网带宽选择多少合适?有计算公式吗?

随着云计算技术的不断发展&#xff0c;越来越多的企业和个人选择使用云服务器来部署应用和存储数据。而在选择云服务器时&#xff0c;公网带宽是一个重要的参数&#xff0c;它直接影响到服务器的网络性能和数据传输速度。 公网带宽是指云服务器在互联网上的数据传输速率&#x…

Mongodb安装Linux

确定你的CentOS 版本 使用以下命令: /etc/centos-release下载Mongodb 解压tgz压缩包 创建data和log文件夹 , 确定你的文件夹访问权限 在log文件夹里面创建mongodb.log文件(这一步很重要 ! ! !) touch mongodb.log创建mongodb.conf文件 在你的mongodb文件夹下 vi mongo…

虚拟机扩容后黑屏卡死解决方法

亲测有效&#xff0c;首先一般是在扩容后黑屏的&#xff0c;现象为开机后看到个横线光标不闪&#xff0c;黑屏&#xff0c;进入不了桌面。原因是硬盘已经满了&#xff0c;所以解决方法就是清理硬盘。所以首先还是要解决登录问题。 开机时按 esc 键进入 GNU GRUB&#xff0c;选择…

浙大发布Agent学习框架,13B 模型达到 ChatGPT 水平!

2023 年下半年&#xff0c;AI Agent 正式开启「大模型下半场」。 自“人工智能”这门学科创立之初&#xff0c;一种可以“观察世界”-“思考推理”-“做出行动”-“反思学习”的人造代理就是构建通用人工智能的终极目标之一。而基于大模型的 AI Agent 借助大模型强大的推理判断…

github官网连接超时解决方案(图解版,亲测成功)

目录 一、521github镜像站1.1、521github镜像站访问地址 二、Github520镜像站2.1、Github520镜像站访问地址地址 三、UsbEAm Hosts Editor加速器3.1、UsbEAm加速器下载、安装及使用 四、SwitchHosts加速器4.1、SwitchHosts加速器下载、安装及使用 五、原名&#xff08;Steam)目…

Android P 屏保和休眠相关知识

Android P添加屏保功能&#xff0c;如果休眠时间设定大于屏保时间&#xff0c;则先进入屏保&#xff0c;达到休眠时间后再进入休眠 需求&#xff1a; 添加屏幕互保开关&#xff0c;默认关闭。只保留时钟&#xff0c;可设定指针和数字、夜间模式。启用时间改多长时间无操作进入…

LeetCode —— 137. 只出现一次的数字 II

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

互联网加竞赛 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸表情识别 该项目较…

angular 表单FormGroup笔记

一、校验 1、校验提示 <nz-form-item><nz-form-label>手机号码</nz-form-label><nz-form-control [nzErrorTip]"mobileTemplate"><input nz-input formControlName"mobile" placeholder"请输入" /><ng-templ…

springboot mybatis-plus 项目分层笔记

整体定义 config: 配置项&#xff0c;包含configuration注解 constants: 常量类enums: 枚举 exceptions: 全局异常处理&#xff0c;自定义异常&#xff0c;RestControllerAdvice 注解 fia3: 三大器依据执行顺序&#xff1a;过滤器filter、拦截器interceptor、切面aop 简称 fia…

Flutter canvas 画一条波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形&#xff0c;html 的 Canvas 也画过一次类似的&#xff0c; 今天用 Flutter Canvas 试了下 感觉差不多&#xff1a; html 版本 大致效果如下&#xff1a; 思路和 html 实现的类似&#xff1a; 也就是找出点的位置&#xff0c;使用二阶…

Python实现avif图片转jpg格式并识别图片中的文字

文章目录 一、图片识别文字1、导包2、代码实现3、运行效果 二、avif格式图片转jpg格式1、导包2、代码实现3、运行效果4、注意事项 三、Python实现avif图片转jpg格式并识别文字全部代码 在做数据分析的时候有些数据是从图片上去获取的&#xff0c;这就需要去识别图片上的文字。P…

Buffer缓冲区类设计实现

目录 类设计理念 类设计接口函数 类设计函数实现 测试 正常读取与写入 相同类型拷贝 扩容测试 按行读取 类设计理念 类设计接口函数 #include <vector> #include <cstdint>#define BUFFER_DEFAULT_SIZE 1024 // Buffer 默认起始大小 class Buffer { pr…

Redis -- String 字符串, 计数命令,字符串操作

"学如逆水行舟&#xff0c;不进则退。" 目录 Redis的String字符串 常见命令 set get mget mset setnx setex psetex 计数命令 incr incrby decr decrby incrbyfloat 字符串操作 append getrange setrange strlen 小结 string内部编码 Redis…

全方面解析msvcp110.dll文件的修复教程,六个修复msvcp110.dll文件丢失问题的详细方法

msvcp110.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2012 Redistributable Package&#xff08;微软视觉C 2012重新分配包&#xff09;的一部分。这个文件主要包含了C标准库中的一些函数&#xff0c;特别是与内存管理、异常处理、字符串处理和数学计算相关的…