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 组件则适用于展示数据的时间序列变化。你可以根据需要调整每个图表的样式、数据和颜色,以满足不同的可视化需求。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物业管理平台系统提升社区智能化服务效率与管理水平

内容概要 在现代社会中,物业管理平台系统的出现,为社区的智能化服务带来了革命性的变化。这种系统不仅仅是提升了工作效率,更是通过一系列智能化功能,根本性改变了物业管理的方式。比如,在广告位管理方面,…

Kafka 深入服务端 — 时间轮

Kafka中存在大量的延迟操作,比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器,来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能,因为它们的插入和…

Baklib如何推动企业知识管理的创新与转型探讨

内容概要 在当今快速发展的数字化时代,企业需要不断适应变化,以保持竞争优势。Baklib作为一款企业知识管理中台,扮演着推动数字化转型的重要角色。它通过提供一个集成的知识管理平台,帮助企业高效管理和共享内部及外部的知识资源…

日志收集Day005

1.filebeat的input类型之filestream实战案例: 在7.16版本中已经弃用log类型,之后需要使用filebeat,与log不同,filebeat的message无需设置就是顶级字段 1.1简单使用: filebeat.inputs: - type: filestreamenabled: truepaths:- /tmp/myfilestream01.lo…

【Rust自学】15.3. Deref trait Pt.2:隐式解引用转化与可变性

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.3.1. 函数和方法的隐式解引用转化(Deref Coercion) 隐式解引用转化(Deref Coercion)是为…

【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构

单体仓库(Monorepo)搭建指南:从零开始 单体仓库(Monorepo)是一种将多个相关项目集中管理在一个仓库中的开发模式。它可以帮助开发者共享代码、统一配置,并简化依赖管理。本文将通过实际代码示例&#xff0…

【MySQL — 数据库增删改查操作】深入解析MySQL的create insert 操作

数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [,column] ...)] VALUES(value_list)[,(value_list)] ... # value 后面的列的个数和类型,要和表结构匹配…

VSCode下EIDE插件开发STM32

VSCode下STM32开发环境搭建 本STM32教程使用vscode的EIDE插件的开发环境,完全免费,有管理代码文件的界面,不需要其它IDE。 视频教程见本人的 VSCodeEIDE开发STM32 安装EIDE插件 Embedded IDE 嵌入式IDE 这个插件可以帮我们管理代码文件&am…

electron打包客户端在rk3588上支持h265硬解

目录 前言 chromium是如何支持h265硬解 electron/chromium第一次编译 electron/chromium第二次编译 前言 我们的客户端程序是用electron打包的前端程序,其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的,但视频源…

An OpenGL Toolbox

3.An OpenGL Toolbox 声明:该代码来自:Computer Graphics Through OpenGL From Theory to Experiments,仅用作学习参考 3.1 Vertex Arrays and Their Drawing Commands 顶点数组及其绘制命令:将几何数据存储在一个位置&#xff0c…

Three城市引擎地图插件Geo-3d

一、简介 基于Three开发,为Three 3D场景提供GIS能力和城市底座渲染能力。支持Web墨卡托、WGS84、GCJ02等坐标系,支持坐标转换,支持影像、地形、geojson建筑、道路,植被等渲染。支持自定义主题。 二、效果 三、代码 //插件初始化…

侧边导航(Semi Design)

根据前几次的导航栏设计,从最简单的三行导航栏到后面响应式的导航栏,其实可以在这个的基础上慢慢优化,就可以得到一个日常使用设计的导航栏。设计步骤也和之前的类似。 一、实现步骤 1、先下载安装好npm install douyinfe/semi-icons 2、引…

【中间件快速入门】什么是Redis

现在后端开发会用到各种中间件,一不留神项目可能在哪天就要用到一个我们之前可能听过但是从来没接触过的中间件,这个时候对于开发人员来说,如果你不知道这个中间件的设计逻辑和使用方法,那在后面的开发和维护工作中可能就会比较吃…

将 OneLake 数据索引到 Elasticsearch - 第二部分

作者:来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分,第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中,我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…

“AI教学实训系统:打造未来教育的超级引擎

嘿,各位教育界的伙伴们,今天我要跟你们聊聊一个绝对能让你们眼前一亮的教学神器——AI教学实训系统。作为资深产品经理,我可是亲眼见证了这款系统如何颠覆传统教学,成为未来教育的超级引擎。 一、什么是AI教学实训系统&#xff1f…

Linux下php8安装phpredis扩展的方法

Linux下php8安装phpredis扩展的方法 下载redis扩展执行安装编辑php.ini文件重启php-fpmphpinfo 查看 下载redis扩展 前提是已经安装好redis服务了 php-redis下载地址 https://github.com/phpredis/phpredis 执行命令 git clone https://github.com/phpredis/phpredis.git执行…

基于SMPL的三维人体重建-深度学习经典方法之VIBE

本文以开源项目VIBE[1-2]为例,介绍下采用深度学习和SMPL模板的从图片进行三维人体重建算法的整体流程。如有错误,欢迎评论指正。 一.算法流程 包含生成器模块和判别器模块,核心贡献就在于引入了GRU模块,使得当前帧包含了先前帧的先…

2.1.3 第一个工程,点灯!

新建工程 点击菜单栏左上角,新建工程或者选择“文件”-“新建工程”,选择工程类型“标准工程”选择设备类型和编程语言,并指定工程文件名及保存路径,如下图所示: 选择工程类型为“标准工程” 选择主模块机型&#x…

CVE-2025-0411 7-zip 漏洞复现

文章目录 免责申明漏洞描述影响版本漏洞poc漏洞复现修复建议 免责申明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 漏洞描述 此漏洞 (CVSS SCORE 7.0) 允许远程攻击者绕…

mysql 学习6 DML语句,对数据库中的表进行 增 删 改 操作

添加数据 我们对 testdatabase 数据中 的 qqemp 这张表进行 增加数据,在这张表 下 打开 命令行 query console 在 软件中就是打开命令行的意思 可以先执行 desc qqemp; 查看一下当前表的结构。 插入一条数据 到qqemp 表,插入时要每个字段都有值 insert…