当前位置: 首页 > news >正文

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 模块和 BarLineTab 类。
  • 创建 Tab 实例 tab
  • 分别创建 Bar 实例 barLine 实例 line,并添加相应的数据和设置标题。
  • 使用 tab.add() 方法将 barline 分别添加到 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 模块和 BarLinePage 类,以及 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&#xff1…...

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&#xff08;1.8及以上版本&#xff09; Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...