Pyecharts之图表组合与布局优化
在数据可视化中,我们经常需要将多个图表组合在一起,以展示不同维度的数据或者进行对比分析。同时,合理的布局能够提升图表的可读性和用户体验。Pyecharts 提供了强大的组件和方法,让我们可以轻松实现图表的组合和布局优化。本篇将重点介绍如何使用 Tab 组件将多个图表组合在一个 Tab 下,如何使用 Page 组件调整图表布局和排列多个图表,以及如何利用 Timeline 组件实现自动播放功能。
一、一个 Tab 下多图表组合
Tab 组件允许我们将多个图表组合在一起,用户可以通过切换 Tab 标签查看不同的图表,这对于展示相关但不同类型的数据集或分析结果非常有用。以下是 tab_with_multiple_chart() 函数的实现,展示了如何通过 Tab 组件组合多个图表:
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Tabdef tab_with_multiple_chart():tab = Tab()# 创建第一个图表,这里使用柱状图bar = Bar()bar.add_xaxis(["A", "B", "C", "D", "E"])bar.add_yaxis("系列 1", [10, 20, 30, 40, 50])bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图"))# 创建第二个图表,这里使用折线图line = Line()line.add_xaxis(["A", "B", "C", "D", "E"])line.add_yaxis("系列 1", [5, 15, 25, 35, 45])line.set_global_opts(title_opts=opts.TitleOpts(title="折线图"))# 将两个图表添加到 Tab 中tab.add(bar, "柱状图")tab.add(line, "折线图")return tabchart = tab_with_multiple_chart()
chart.render_notebook()

代码解释:
- 首先,导入所需的模块和类,包括
options模块和Bar、Line、Tab类。 - 创建
Tab实例tab。 - 分别创建
Bar实例bar和Line实例line,并添加相应的数据和设置标题。 - 使用
tab.add()方法将bar和line分别添加到Tab中,并为每个图表指定一个标签,方便用户切换查看。
通过上述代码,用户可以在 Jupyter Notebook 中看到一个带有两个标签的组件,点击不同的标签可以切换查看柱状图和折线图。这种组合方式非常适合将多个相关图表放在一起,方便对比和分析不同类型的数据。
二、Page 布局更改与多图表排列
Page 组件允许我们将多个图表按照不同的布局排列,以实现更灵活的布局效果。以下是 page_simple_layout() 函数的实现,展示了如何使用 Page 组件调整图表布局和排列多个图表:
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Page
import randomdef page_simple_layout():page = Page()# 创建第一个图表,这里使用柱状图bar = Bar()bar.add_xaxis([f"Item {i}" for i in range(1, 11)])bar.add_yaxis("系列 1", [random.randint(10, 100) for _ in range(10)])bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图 1"))# 创建第二个图表,这里使用横向柱状图bar_h = Bar()bar_h.add_xaxis([f"Item {i}" for i in range(1, 11)])bar_h.add_yaxis("系列 2", [random.randint(10, 100) for _ in range(10)])bar_h.reversal_axis() # 将柱状图设置为横向bar_h.set_global_opts(title_opts=opts.TitleOpts(title="横向柱状图"),xaxis_opts=opts.AxisOpts(name="数据量"),yaxis_opts=opts.AxisOpts(name="项目"))# 创建第三个图表,这里使用折线图line = Line()line.add_xaxis([f"Item {i}" for i in range(1, 11)])line.add_yaxis("系列 3", [random.randint(10, 100) for _ in range(10)])line.set_global_opts(title_opts=opts.TitleOpts(title="折线图"),xaxis_opts=opts.AxisOpts(name="项目"),yaxis_opts=opts.AxisOpts(name="数据量"))# 将多个图表添加到 Page 中page.add(bar)page.add(bar_h)page.add(line)return pagechart = page_simple_layout()
chart.render_notebook()
代码解释:
- 导入所需的模块和类,包括
options模块和Bar、Line、Page类,以及random模块。 - 创建
Page实例page。 - 对于
bar柱状图:- 使用列表推导式生成
x轴数据。 - 使用
random.randint(10, 100)生成 10 个随机数据添加到y轴。 - 设置图表标题。
- 使用列表推导式生成
- 对于
bar_h横向柱状图:- 同样生成
x轴数据和随机y轴数据。 - 使用
reversal_axis()方法将柱状图设置为横向。 - 设置标题和轴标签。
- 同样生成
- 对于
line折线图:- 生成
x轴数据和随机y轴数据。 - 设置标题和轴标签。
- 生成
- 使用
page.add()方法将三个图表依次添加到Page中。

当运行上述代码时,你会看到多个图表依次排列在 Jupyter Notebook 中,这种布局方式可以将多个图表组合在一起,方便用户查看多个相关图表的全貌。通过 Page 组件,我们可以将不同类型的图表放在一起进行展示,为用户提供更全面的数据可视化信息。
三、Timeline 自动播放
Timeline 组件可以让我们在不同时间点的图表之间切换,并且支持自动播放,这对于展示数据随时间的变化非常有用。以下是 timeline_auto_play() 函数的实现,展示了如何使用 Timeline 组件实现自动播放功能,并对图表颜色进行修改:
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.faker import Fakerdef timeline_auto_play():timeline = Timeline(init_opts=opts.InitOpts(theme='light',width='1000px',height='600px'))timeline.add_schema(is_auto_play=True, # 自动播放is_loop_play=True # 循环播放)for year in range(2000, 2020):bar = Bar()bar.add_xaxis(['香蕉', '梨子', '水蜜桃', '核桃', '西瓜', '苹果', '菠萝'])bar.add_yaxis('A', Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color='#FF0000')) # 红色系列 Abar.add_yaxis('B', Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color='#00FF00')) # 绿色系列 Bbar.set_global_opts(title_opts=opts.TitleOpts(title=f'{year}年的水果数据'))timeline.add(bar, f'{year}年')return timelinechart = timeline_auto_play()
chart.render_notebook()

运行上述代码,你将看到一个自动播放的 Timeline 组件,完整视频在这。其中包含多个年份的柱状图,每个柱状图展示了不同水果的随机数据,并且不同系列有不同的颜色。这种自动播放的 Timeline 组件可以帮助你展示数据随时间的变化,让用户可以轻松观察数据趋势。
四、总结
在实际应用中,我们可以根据数据的特点和分析需求,灵活选择使用 Tab 组件、Page 组件或 Timeline 组件。Tab 组件适合用户切换查看不同类型的图表,Page 组件适合将多个图表排列在一起展示,而 Timeline 组件则适用于展示数据的时间序列变化。你可以根据需要调整每个图表的样式、数据和颜色,以满足不同的可视化需求。
相关文章:
Pyecharts之图表组合与布局优化
在数据可视化中,我们经常需要将多个图表组合在一起,以展示不同维度的数据或者进行对比分析。同时,合理的布局能够提升图表的可读性和用户体验。Pyecharts 提供了强大的组件和方法,让我们可以轻松实现图表的组合和布局优化。本篇将…...
流行的开源高性能数据同步工具 - Apache SeaTunnel 整体架构运行原理
概述 背景 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长,企业需要具备强大的数据集成能力来高效地处理和分析数据。SeaTunnel通过其高度可扩展和灵活的架构,帮助企业快速实现多源数据的采集、…...
Android vendor.img中文件执行权问题
问题 Android 9、11往vendor.img增加文件,烧写到设备后发现增加的可执行文件没有执行权限。经过漫长查找,终于找到了问题的根源,谨以此篇献给哪些脚踏实地的人们。 根本原因 system/core/libcutils/fs_config.cpp文件,fs_confi…...
关于使用微服务的注意要点总结
一、防止过度设计 微服务的拆分一定要结合团队人员规模来考虑,笔者就曾遇到过一个公司的项目,是从外部采购回来的,微服务划分为十几个应用,我们在此项目基础上进行自行维护和扩展。由于公司业务规模不大,而且二次开发的…...
C++17 新增属性详解
文章目录 1. [[fallthrough]]用途示例应用场景 2. [[maybe_unused]]用途示例应用场景 3. [[nodiscard]]用途示例应用场景 总结 C17标准引入了多个新的属性(Attributes),这些属性为代码提供了更丰富的语义表达能力,同时帮助编译器生…...
使用python-docx包进行多文件word文字、字符批量替换
1、首先下载pycharm。 2、改为中文。 3、安装python-docx包。 搜索包名字,安装。 4、新建py文件,写程序。 from docx import Documentdef replace1(array1):# 替换词典(标签值按实际情况修改)dic {替换词1: array1[0], 替换…...
15_业务系统基类
创建脚本 SystemRoot.cs 因为 业务系统基类的子类 会涉及资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 所以在业务系统基类 提取引用资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 并调用单例初始化 using UnityEngine; // 功能 : 业务系统基类 public c…...
Pyecharts之散点图的视觉扩展
在数据可视化中,散点图是一种强大的工具,可用于展示数据点在二维平面上的分布情况。通过添加各种视觉组件,我们可以让散点图变得更加丰富和具有表现力,更能反映数据的多维度特征。本文将详细解读如何为散点图添加不同的视觉组件&a…...
Java学习教程,从入门到精通,JDBC删除数据库语法知识点(101)
一、JDBC删除数据库语法知识点 1. 概述 JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。 在JDBC中,删除数据库的操作主要是通过执行…...
Baklib如何推动企业知识管理的创新与转型探讨
内容概要 在当今快速发展的数字化时代,企业需要不断适应变化,以保持竞争优势。Baklib作为一款企业知识管理中台,扮演着推动数字化转型的重要角色。它通过提供一个集成的知识管理平台,帮助企业高效管理和共享内部及外部的知识资源…...
【算法】递归型枚举与回溯剪枝初识
递归型枚举与回溯剪枝初识 1.枚举子集2.组合型枚举3.枚举排列4.全排列问题 什么是搜索?搜索,是一种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候也叫作暴搜。搜索一般分为深度优先搜索…...
无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整
无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整 0 前言 之前文章添加了一个自定义的模块,本篇文章在之前的自定义模块中,添加两个自定义参数 使用QGC显示出来,并通过QGC调整参数值,代码实现参数更新 新增的参…...
《CPython Internals》阅读笔记:p356-p359
《CPython Internals》学习第 19天,p356-p359 总结,总计 4 页。 一、技术总结 1.benchmark suite The benchmark suite is the tool to use when comparing the complete performance of Python. The Python Benchmark suite is a collection of Pyth…...
Linux--权限
Linux系统的权限管理是保障系统安全的重要机制,以下详细讲解权限相关概念及操作指令: 一、基础权限机制 1. 权限的三元组,读(r)、写(w)、执行(x) 每个文件或目录有三组…...
java后端之登录认证
基础登录功能:根据提供的用户名和密码判断是否存在于数据库 LoginController.java RestController Slf4j public class LoginController {Autowiredprivate UserService userService;PostMapping("/login")public Result login(RequestBody User user) {…...
【矩阵二分】力扣378. 有序矩阵中第 K 小的元素
给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。 你必须找到一个内存复杂度优于 O(n2) 的解决方案。 示例 1࿱…...
C语言-构造数据类型
1、构造数据类型 结构体、共用体、枚举。 2、结构体 1、结构体的定义 结构体是一个自定义的复合数据类型,它允许将不同类型的数据组合在一起。 struct 结构体名 {数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;数据类型4 成员变量4; } 2、结构体变…...
鸿蒙next 自定义日历组件
效果图预览 20250124-113957 使用说明 1.选择日期左右箭头,实现每月日历切换,示例中超出当前月份,禁止进入下一月,可在代码更改 2.日历中显示当前选择的日期,选中的日期颜色可自定义 3.日历中可展示历史记录作为数据…...
【express-generator】08-路由重定向
前言 通过前面两篇文章的讲解,我们已经介绍完第二阶段的前两点,本篇介绍第三点:路由重定向。 1. 路由重定向概述 路由重定向是指在服务器端将客户端的请求从一个 URL 重定向到另一个 URL 的过程。这通常通过 HTTP 状态码(如 30…...
搭建Spring Boot开发环境
JDK(1.8及以上版本) Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
