探索pyecharts库中条形图的高级用法与定制技巧,打造精美数据可视化图表在这里插入图片描述

在数据可视化中,条形图是最常用的图表类型之一。它能够清晰地展示不同类别的数据对比,帮助我们快速理解数据特征。本文将为您介绍pyecharts库中条形图的5种高级用法,从基础到进阶,让您轻松掌握条形图的各种定制技巧。pyecahts源码

目录

    • 图表一:带标记线的条形图(指定类型)
      • 代码解析
      • 使用场景
    • 图表二:带Graphic组件的条形图
      • 代码解析
      • 技巧提示
      • 应用场景
    • 图表三:瀑布图
      • 代码解析
      • 实现原理
      • 应用场景
    • 图表四:渐变圆柱条形图
      • 代码解析
      • 设计技巧
      • 应用场景
    • 图表五:单系列柱间距离条形图
      • 代码解析
      • 参数说明
      • 应用场景
      • 注意事项
    • 注意事项与最佳实践
    • 总结

欢迎来到每日五个pyecharts可视化图表系列的第五篇。在本文中,我们将继续探索pyecharts库中条形图(Bar)的各种高级用法和定制技巧。

图表一:带标记线的条形图(指定类型)

在数据对比分析中,除了展示原始数据外,我们常常需要突出显示数据中的关键统计指标。本图表展示了如何在条形图中添加标记线,包括最小值、最大值和平均值标记,帮助读者快速把握数据分布特征。

from pyecharts import options as opts 
from pyecharts.charts import Bar 
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(指定类型)")) .set_series_opts(label_opts=opts.LabelOpts(is_show=False),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="min", name="最小值"),opts.MarkLineItem(type_="max", name="最大值"),opts.MarkLineItem(type_="average", name="平均值"),]),)
)
c.render_notebook()

代码解析

  • 数据生成:使用Faker.choose()生成随机的类别数据作为X轴,Faker.values()生成随机数值作为Y轴数据
  • 标记线配置:通过markline_opts参数添加标记线,支持多种类型:
    • min: 显示最小值标记线,帮助快速定位数据中的最低点
    • max: 显示最大值标记线,突出数据中的峰值
    • average: 显示平均值标记线,展示数据的集中趋势
  • 标签设置:设置label_opts为不显示标签,避免标签过多导致图表杂乱

使用场景

这种带标记线的条形图特别适合于需要快速把握数据分布特征的场景,如销售数据对比、性能指标分析等。通过标记线,我们可以直观地看到数据的极值和平均水平,为决策提供参考。
在这里插入图片描述

图表二:带Graphic组件的条形图

在数据可视化中,有时我们需要为图表添加一些自定义的图形元素或文本,以增强图表的信息传达能力或视觉效果。pyecharts的Graphic组件提供了强大的自定义图形功能,让我们可以在图表上添加各种图形元素。

from pyecharts import options as opts 
from pyecharts.charts import Bar 
from pyecharts.commons.utils import JsCode 
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-Graphic 组件示例"),graphic_opts=[opts.GraphicGroup(graphic_item=opts.GraphicItem(rotation=JsCode("Math.PI / 4"),bounding="raw",right=110,bottom=110,z=100,),children=[opts.GraphicRect(graphic_item=opts.GraphicItem(left="center", top="center", z=100),graphic_shape_opts=opts.GraphicShapeOpts(width=400, height=50),graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(fill="rgba(0,0,0,0.3)"),),opts.GraphicText(graphic_item=opts.GraphicItem(left="center", top="center", z=100),graphic_textstyle_opts=opts.GraphicTextStyleOpts(text="pyecharts bar chart",font="bold 26px Microsoft YaHei",graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(fill="#fff"),),),],)],)
)
c.render_notebook()

代码解析

  • 数据生成:使用Faker.choose()Faker.values()生成模拟数据
  • 图形组件配置:通过graphic_opts参数添加图形元素
  • 图形组创建:创建了一个GraphicGroup,包含一个旋转的矩形和文本
  • JavaScript集成:使用JsCode来编写JavaScript代码,实现旋转效果
  • 属性设置:详细设置了图形元素的位置、大小、颜色等属性
  • 视觉设计:矩形使用半透明黑色背景,文本使用白色粗体字,形成鲜明对比
  • 层级控制:通过z参数设置图形元素的层级,确保它们显示在图表上方

技巧提示

  • 可以通过调整rotation参数来改变图形的旋转角度
  • 使用bounding参数可以控制图形的边界计算方式
  • 通过调整rightbottom参数可以精确控制图形的位置
  • 可以添加多个GraphicGroup来创建复杂的图形组合

应用场景

这种带Graphic组件的条形图适合于需要添加水印、注释或自定义装饰元素的场景,如报表封面、演示文稿中的图表展示等。
在这里插入图片描述

图表三:瀑布图

瀑布图是一种特殊类型的柱状图,它能够清晰地展示一个初始值如何通过一系列正值和负值的累积,最终到达结果值。瀑布图特别适合展示起始值到最终值的累积过程,在财务分析、销售数据变化、项目预算等场景中有着广泛的应用。

from pyecharts.charts import Bar 
from pyecharts import options as opts x_data = [f"11月{str(i)}日" for i in range(1, 12)] 
y_total = [0, 900, 1245, 1530, 1376, 1376, 1511, 1689, 1856, 1495, 1292] 
y_in = [900, 345, 393, "-", "-", 135, 178, 286, "-", "-", "-"] 
y_out = ["-", "-", "-", 108, 154, "-", "-", "-", 119, 361, 203] bar = (Bar() .add_xaxis(xaxis_data=x_data) .add_yaxis(series_name="", y_axis=y_total, stack="总量", itemstyle_opts=opts.ItemStyleOpts(color="rgba(0,0,0,0)"), ) .add_yaxis(series_name="收入", y_axis=y_in, stack="总量") .add_yaxis(series_name="支出", y_axis=y_out, stack="总量") .set_global_opts(yaxis_opts=opts.AxisOpts(type_="value")) 
)
bar.render_notebook()

代码解析

  • X轴数据:手动构建了日期数据作为X轴,更符合实际业务场景
  • 系列配置:使用了三个数据系列来实现瀑布图效果:
    • y_total: 表示累计总量,设置为透明色使其不可见
    • y_in: 表示收入数据,使用正值
    • y_out: 表示支出数据,使用负值
  • 堆叠设置:通过stack="总量"将三个系列堆叠显示
  • 图例控制:使用空字符串作为第一个系列的名称,使其不在图例中显示
  • 缺失数据处理:使用"-"表示没有数据的点
  • 坐标轴设置:设置Y轴为数值型坐标轴

实现原理

瀑布图的关键在于使用堆叠柱状图的特性,通过透明的总量系列和正负值的堆叠来展示数据的累积过程。收入数据(正值)向上堆叠,支出数据(负值)向下堆叠,最终形成从起始值到最终值的完整路径展示。

应用场景

瀑布图常用于财务分析中的收支分析、销售数据的增减变化分析、项目预算的构成分析等场景。它能够清晰地展示各个因素对最终结果的贡献程度,帮助决策者更好地理解数据背后的故事。
在这里插入图片描述

图表四:渐变圆柱条形图

在数据可视化中,美观的图表能够更好地吸引观众的注意力,提升数据传达的效果。本图表展示了如何创建具有渐变颜色和圆角效果的圆柱条形图,通过精美的视觉设计提升数据展示的吸引力。

from pyecharts import options as opts 
from pyecharts.charts import Bar 
from pyecharts.commons.utils import JsCode 
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values(), category_gap="60%") .set_series_opts(itemstyle_opts={"normal": {"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(0, 244, 255, 1)'}, {offset: 1,color: 'rgba(0, 77, 167, 1)'}], false)"""),"barBorderRadius": [30, 30, 30, 30],"shadowColor": "rgb(0, 160, 221)",}}) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-渐变圆柱")) 
)
c.render_notebook()

代码解析

  • 数据生成:使用Faker.choose()Faker.values()生成模拟数据
  • 间距设置:通过category_gap="60%"设置类别之间的间距,使图表更加通透
  • 样式配置:使用itemstyle_opts详细配置条形图的样式:
    • color: 使用JsCode创建线性渐变颜色,从顶部的亮蓝色到底部的深蓝色,形成视觉层次感
    • barBorderRadius: 设置四个角的圆角半径均为30,实现完美的圆柱效果
    • shadowColor: 添加阴影效果,增强立体感和深度感
  • 标题设置:设置图表标题为"Bar-渐变圆柱"

设计技巧

  • 渐变颜色的方向可以通过调整LinearGradient的前四个参数来改变
  • 可以尝试不同的颜色组合,以适应不同的主题和场景
  • 圆角半径的大小可以根据数据量和图表尺寸进行调整
  • 阴影效果可以增强图表的立体感,但不宜过于强烈,以免喧宾夺主

应用场景

这种渐变圆柱条形图特别适合需要强调视觉效果的演示场合,如产品发布会、营销报告、数据可视化大屏等。精美的视觉设计能够让数据展示更加生动和吸引人,提升观众的关注度和理解度。
在这里插入图片描述

图表五:单系列柱间距离条形图

在创建条形图时,柱间距离的设置对图表的美观度和可读性有着重要影响。本图表展示了如何调整单系列柱状图的柱间距离,以优化图表的视觉效果和数据展示。

第五个图表展示了如何设置单系列柱状图的柱间距离。通过调整柱间距离,可以使图表更加美观,也可以根据数据量的多少来优化展示效果。

from pyecharts import options as opts 
from pyecharts.charts import Bar 
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values(), category_gap="80%") .set_global_opts(title_opts=opts.TitleOpts(title="Bar-单系列柱间距离")) #.render("bar_same_series_gap.html") 
)
c.render_notebook()

代码解析

  • 数据生成:使用Faker.choose()生成随机的类别数据作为X轴,Faker.values()生成随机数值作为Y轴数据
  • 柱间距离设置:通过category_gap="80%"设置柱间距离为80%。需要注意的是,对于单系列条形图,category_gap实际上控制的是类别之间的间距,而不是同一类别中不同系列的间距(因为只有一个系列)
  • 标题设置:设置图表标题为"Bar-单系列柱间距离"

参数说明

  • category_gap:用于设置类别之间的间距,取值范围为0到100%。对于多系列条形图,它控制的是不同类别之间的间距
  • 对于单系列条形图,如果想要调整柱子的宽度,可以通过bar_width参数来设置

应用场景

调整柱间距离是美化柱状图的常用技巧之一:

  • 较大的柱间距离(如80%)可以使图表看起来更加通透,适合数据量较少、类别较少的情况
  • 较小的柱间距离(如20%)则可以在有限的空间内展示更多数据,适合数据量较大、类别较多的情况
  • 在对比分析中,适当的柱间距离可以增强数据的可读性和对比效果
    在这里插入图片描述

注意事项

对于单系列条形图,category_gap参数的效果可能不如多系列条形图明显。如果需要精确控制柱子的宽度,可以考虑使用bar_width参数,该参数可以设置为具体的像素值或百分比。

注意事项与最佳实践

  1. 环境配置:确保已安装pyecharts库:pip install pyecharts。建议使用1.9.0及以上版本以确保代码兼容性
  2. 版本差异:不同版本的pyecharts可能存在语法差异,本文使用的是1.9.0版本
  3. 运行环境:所有示例代码均可在Jupyter Notebook中直接运行。如果需要在其他环境中运行,可能需要调整输出方式
  4. 数据准备:在实际应用中,建议使用真实数据替换Faker生成的模拟数据
  5. 性能优化:对于大规模数据集,建议对数据进行适当采样或聚合,以提高图表的渲染性能
  6. 自定义扩展:pyecharts提供了丰富的自定义选项,您可以根据实际需求调整图表的样式和功能
  7. 响应式设计:可以通过设置widthheight参数,使图表适应不同的显示设备
  8. 导出与分享:使用render()方法可以将图表导出为HTML文件,方便分享和展示

总结

本文介绍了pyecharts库中条形图的5种高级用法,包括带标记线的条形图、带Graphic组件的条形图、瀑布图、渐变圆柱条形图和单系列柱间距离条形图。通过这些示例,我们学习了如何使用pyecharts创建各种精美的条形图,并掌握了一些实用的定制技巧。

条形图是数据可视化中最常用的图表类型之一,掌握其高级用法能够帮助我们更好地展示和分析数据。希望本文能够对您有所帮助,也欢迎您继续探索pyecharts的其他功能和图表类型。

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

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

相关文章

分布式版本控制工具Git

一.开发中为什么需要Git因为在多人开发中Git可以管理代码,而且每个人都可以从库里面下载代码进行修改,每个人上传和修改Git都会有记录,如果出现大错误,还可以回退到正常版本。二.Git原理我们首先从代码库(Remote)下载代码到工作区…

OpenAI重磅开源GPT-oss:首款支持商用的AI Agent专属模型

今日凌晨,OpenAI宣布开源两款全新大模型——GPT-oss-120B(1168亿参数)与GPT-oss-20B(209亿参数),成为全球首个支持商业化应用的开放权重推理模型。该模型专为AI智能体(Agent)设计&am…

【STM32】GPIO的输入输出

GPIO是通用的输入输出接口,可配置8种输入模式,输出模式下可控制端口输出高低电平,用于点亮LED、控制蜂鸣器、模拟通信协议等;输入模式下可以读取端口的高低电平或者电压,用于读取按键、外接模块的电平信号、ADC的电压采…

5分钟了解OpenCV

在数字化时代,图像和视频已经成为信息传递的核心载体。从手机拍照的美颜功能到自动驾驶的路况识别,从医学影像分析到安防监控系统,视觉技术正深刻改变着我们的生活。而在这背后,OpenCV 作为一款强大的开源计算机视觉库&#xff0c…

Oracle 关闭 impdp任务

Oracle 关闭 impdp任务 执行 impdp system/123456 attachSYS_EXPORT_TABLE_01 执行 stop_jobimmediate

数据结构——链表2

1.2 实现单链表 在上一篇文章中&#xff0c;单链表的实现只有一少部分&#xff0c;这一篇接着来了解单链表剩下的接口实现。 SList.h#pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h>//定义单链表就是定义节点&#xff0c;因为单链表…

Windows和Linux应急响应以及IP封堵

目录 1、Windows入侵排查思路 1.1 检查系统账号安全 1.2 检查异常端口、进程 1.3 检查启动项、计划任务、服务 1.4 检查系统相关信息 1.5 自动化查杀 1.6 日志分析 系统日志分析 Web 访问日志 2、Linux 入侵排查思路 2.1 账号安全 2.1.1、基本使用 2.1.2、入侵排查…

MIT成果登上Nature!液态神经网络YYDS

2025深度学习发论文&模型涨点之——液态神经网络液态神经网络&#xff08;Liquid Neural Networks&#xff0c;LNN&#xff09;是一种受生物神经系统启发的连续时间递归神经网络&#xff08;RNN&#xff09;&#xff0c;其核心创新在于将静态神经网络转化为由微分方程驱动的…

AI 对话高效输入指令攻略(四):AI+Apache ECharts:生成各种专业图表

- **AI与数据可视化的革命性结合**:介绍AI如何降低数据可视化门槛,提升效率。 - **Apache ECharts:专业可视化的利器**:使用表格对比展示ECharts的特点、优势和适用场景。 - **四步实现AI驱动图表生成**:通过分步指南讲解从环境准备到图表优化的全流程,包含多个代码示例及…

vue2 基础学习 day04 (结构/样式/逻辑、组件通信、进阶语法)下

一、非父子通信-event bus 事件总线1.作用非父子组件之间&#xff0c;进行简易消息传递。(复杂场景→ Vuex)2.步骤创建一个都能访问的事件总线 &#xff08;空Vue实例&#xff09;import Vue from vue const Bus new Vue() export default BusA组件&#xff08;接受方&#xf…

ubuntu 20.04 C和C++的标准头文件都放在哪个目录?

在 Ubuntu 20.04 中&#xff0c;C 和 C 标准头文件的存放目录主要由编译器&#xff08;如 GCC&#xff09;的安装路径决定&#xff0c;通常分为以下两类&#xff1a;​1. C 标准头文件​C 语言的标准头文件&#xff08;如 <stdio.h>、<stdlib.h> 等&#xff09;默认…

change和watch

是的&#xff0c;你理解得很对&#xff01; change 与 v-model 的结合&#xff1a;change 事件通常用于监听 表单元素的变化&#xff0c;但它并不一定意味着值发生了变化。它主要是当 用户与输入框交互时&#xff08;如点击选项、选择文本框内容、提交表单等&#xff09;触发的…

分布式微服务--GateWay(1)

一、什么是微服务网关&#xff08;API Gateway&#xff09; 定义&#xff1a;微服务网关是整个系统请求的统一入口&#xff0c;负责请求转发、过滤处理、安全校验等。 作用&#xff1a; 请求路由 日志记录 权限控制 参数校验 解决跨域问题 黑白名单控制 限流、熔断、降级…

大文件断点续传(vue+springboot+mysql)

断点续传vue前端代码后端代码controller 层service层持久层主表&#xff0c;初始化单次上传文件表&#xff0c;单次上传所有的文件记录文件分块表科普信息参考其他博主 流程图 vue前端代码 这里是只做了demo示例&#xff0c;主线测试没什么问题&#xff0c;前端同学可参考修…

Nodejs》》MySql

Node.js 操作MySQL数据库 文档 # 项目要先安装mysql包npm i mysqlxx // 安装指定版本npm i mysql // 默认安装最新版本 # 连接 mysq// 使用连接池连接const mysql require(mysql)# 建立连接const db mysql.createPool({host:, // 数据库的IP地址user:ro…

金仓数据库常见问题(持续更新)

目录 1.查看大小是否敏感写参数&#xff0c;提示&#xff1a;未认可的配置参数 "case_sensitive" 2.sys_backup.sh init时提示can not connect the primary node 3.设置逻辑备份运行脚本时提示错误are not allowed to use this program (crontab) 4.修改表字段类…

Docker Buildx最佳实践:多架构镜像构建指南

文章目录为什么需要 Docker Buildx安装与启用 Docker Buildx创建多架构构建器实例构建多架构镜像优化构建性能调试多架构构建实战案例&#xff1a;构建 Go 应用多架构镜像总结Docker Buildx 是 Docker 官方推出的扩展工具&#xff0c;用于支持多平台镜像构建&#xff0c;简化跨…

你用的是什么键盘?

在电竞行业飞速发展的当下&#xff0c;游戏键盘作为玩家操作的核心载体&#xff0c;其性能表现直接影响着游戏体验与竞技结果。而赛卓电子推出的磁轴键盘专用芯片 SC4823&#xff0c;凭借一系列突破性的技术特性&#xff0c;正成为游戏键盘领域的性能革新者。​对于游戏玩家而言…

Activiti 中各种 startProcessInstance 接口之间的区别

前言在用 RuntimeService 接口启动流程实例时&#xff0c;总是分不清楚不同 startProcessInstanceXXX 接口之间的区别&#xff0c;这篇文章基于 Activiti 7.0.0.GA 版本&#xff0c;对这一类接口进行一个梳理和归类。详解接口列表RuntimeService 接口中以 startProcessInstance…

新手BUG:函数中 static 变量的赋值语句只会执行一次

在 C 函数中使用 static 变量时&#xff0c;很多新手会陷入一个认知误区&#xff1a;认为变量的初始化语句会在每次函数调用时执行。比如在bool funcA() { // Q&#xff1a;多次调用funcA&#xff0c;funcB会被执行几次&#xff1f;// A&#xff1a;1次static bool value func…