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

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, Tab


def 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 tab


chart = 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 random


def 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 page


chart = 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 Faker


def 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'))  # 红色系列 A
        bar.add_yaxis('B', Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color='#00FF00'))  # 绿色系列 B
        bar.set_global_opts(title_opts=opts.TitleOpts(title=f'{year}年的水果数据'))
        timeline.add(bar, f'{year}年')
    return timeline


chart = timeline_auto_play()
chart.render_notebook()

在这里插入图片描述
运行上述代码,你将看到一个自动播放的 Timeline 组件,完整视频在这。其中包含多个年份的柱状图,每个柱状图展示了不同水果的随机数据,并且不同系列有不同的颜色。这种自动播放的 Timeline 组件可以帮助你展示数据随时间的变化,让用户可以轻松观察数据趋势。

四、总结

在实际应用中,我们可以根据数据的特点和分析需求,灵活选择使用 Tab 组件、Page 组件或 Timeline 组件。Tab 组件适合用户切换查看不同类型的图表,Page 组件适合将多个图表排列在一起展示,而 Timeline 组件则适用于展示数据的时间序列变化。你可以根据需要调整每个图表的样式、数据和颜色,以满足不同的可视化需求。


http://www.kler.cn/a/520028.html

相关文章:

  • VUE3 使用路由守卫函数实现类型服务器端中间件效果
  • dmfldr实战
  • 【ArcGIS微课1000例】0141:提取多波段影像中的单个波段
  • Elastic Agent 对 Kafka 的新输出:数据收集和流式传输的无限可能性
  • 【转帖】eclipse-24-09版本后,怎么还原原来版本的搜索功能
  • 数据库设计
  • 从音频到 PDF:AI 全流程打造完美英文绘本教案
  • 自然语言处理——从原理、经典模型到应用
  • Alibaba Spring Cloud 六 Seata 的核心组件:RM
  • 【6】YOLOv8 训练自己的分割数据集
  • HeidiSQL 12.9
  • 已解决:OSError: [E050] Can‘t find model ‘en_core_web_sm‘.
  • 使用nvm对node进行版本管理
  • 小柯剧场训练营第一期音乐剧演员与第二期报名拉开帷幕!
  • Linux中DataX使用第二期
  • 01-23 statefulSet
  • python-leetcode-删除排序链表中的重复元素 II
  • SSM项目本地Tomcat部署
  • 守护资产,防范风险 | 2025年Web3.0资产安全指南
  • Vue2官网教程查漏补缺学习笔记 - 3Vue实例4模板语法5计算属性监听器
  • Elasticsearch——Elasticsearch查询实战
  • 网易前端开发面试题200道及参考答案 (下)
  • 力扣OJ(3300+)
  • Java设计模式 十八 状态模式 (State Pattern)
  • Linux/C高级(精讲)----进程、文件、shell
  • 菜鸟BUG之常见异常(二)