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

每日五个pyecharts可视化图表-bars(1)

在数据可视化中,柱状图是一种常用且直观的图表类型。本文将介绍五个使用pyecharts库创建的柱状图示例,每个示例都有详细的代码解释和实现原理。
pyecahts图表源码

图表一:带百分比标签的堆叠柱状图

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType# 准备数据,包含值和百分比
list2 = [{"value": 12, "percent": 12 / (12 + 3)},{"value": 23, "percent": 23 / (23 + 21)},{"value": 33, "percent": 33 / (33 + 5)},{"value": 3, "percent": 3 / (3 + 52)},{"value": 33, "percent": 33 / (33 + 43)},
]list3 = [{"value": 3, "percent": 3 / (12 + 3)},{"value": 21, "percent": 21 / (23 + 21)},{"value": 5, "percent": 5 / (33 + 5)},{"value": 52, "percent": 52 / (3 + 52)},{"value": 43, "percent": 43 / (33 + 43)},
]# 创建图表对象并设置主题
c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))# 添加X轴数据.add_xaxis([1, 2, 3, 4, 5])# 添加Y轴数据,设置堆叠和分类间距.add_yaxis("product1", list2, stack="stack1", category_gap="50%").add_yaxis("product2", list3, stack="stack1", category_gap="50%")# 设置系列配置项,特别是标签格式.set_series_opts(label_opts=opts.LabelOpts(position="right",formatter=JsCode("function(x){return Number(x.data.percent * 100).toFixed() + '%';}"),))
)
# 在notebook中显示图表
c.render_notebook()

首先,我们导入了必要的模块,包括pyecharts的选项、柱状图类、JS代码工具和主题设置。然后,我们准备了两组数据,每组数据都包含具体值和对应的百分比。

通过,我们创建了一个Bar对象并设置了主题为LIGHT。接着,我们添加了X轴数据和两组Y轴数据,并将它们设置为堆叠显示,分类间距为50%。

因为需要在图表上显示百分比,我们使用了JsCode工具来自定义标签格式化函数,将数据中的percent字段乘以100并取整,最后添加百分号。标签位置设置为右侧,以便更好地展示。
在这里插入图片描述

图表二:旋转X轴标签的柱状图

from pyecharts import options as opts
from pyecharts.charts import Bar# 创建图表对象
c = (Bar()# 添加X轴数据,注意这里使用了较长的标签名称.add_xaxis(["名字很长的X轴标签1","名字很长的X轴标签2","名字很长的X轴标签3","名字很长的X轴标签4","名字很长的X轴标签5","名字很长的X轴标签6",])# 添加两组Y轴数据.add_yaxis("商家A", [10, 20, 30, 40, 50, 40]).add_yaxis("商家B", [20, 10, 40, 30, 40, 50])# 设置全局配置项.set_global_opts(# 旋转X轴标签以解决过长问题xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),# 设置标题和副标题title_opts=opts.TitleOpts(title="Bar-旋转X轴标签", subtitle="解决标签名字过长的问题"),)
)
# 在notebook中显示图表
c.render_notebook()

首先,我们导入了必要的模块。然后,创建了一个Bar对象并添加了X轴数据,这里特意使用了较长的标签名称来演示问题。

通过,我们添加了两组Y轴数据,分别代表商家A和商家B。

因为X轴标签过长可能会导致重叠,我们在全局配置项中设置了X轴标签的旋转角度为-15度,这样标签会倾斜显示,避免重叠。同时,我们还设置了图表的标题和副标题,使图表更加完整。
在这里插入图片描述

图表三:基础堆叠柱状图

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker# 创建图表对象
c = (Bar()# 使用Faker库生成X轴数据.add_xaxis(Faker.choose())# 添加两组Y轴数据并设置堆叠.add_yaxis("商家A", Faker.values(), stack="stack1").add_yaxis("商家B", Faker.values(), stack="stack1")# 设置系列配置项,隐藏标签.set_series_opts(label_opts=opts.LabelOpts(is_show=False))# 设置全局配置项,添加标题.set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))
)
# 在notebook中显示图表
c.render_notebook()

首先,我们导入了必要的模块,包括Faker库用于生成模拟数据。

通过,我们创建了一个Bar对象,并使用Faker.choose()生成了X轴的类别数据。然后,添加了两组Y轴数据,都使用Faker.values()生成随机数值,并将它们设置为堆叠显示。

因为这里主要展示堆叠效果,我们隐藏了数据标签以避免图表过于拥挤。最后,我们添加了图表标题,使图表更加清晰。
在这里插入图片描述

图表四:带时间轴的宏观经济指标组合图表

这个图表是一个动态的组合可视化,通过时间轴展示2002-2011年全国各地区的多维度经济数据,并结合柱状图和饼图呈现详细数据与占比关系。

代码实现解析

首先,定义了核心函数 get_year_overlap_chart,它接收一个年份参数并返回该年份的组合图表:

#数据可以去pyecharts官网获取
#####################################################################################
# 2002 - 2011 年的数据
def get_year_overlap_chart(year: int) -> Bar:# 创建柱状图bar = (Bar().add_xaxis(xaxis_data=name_list)  # 添加地区名称作为X轴# 添加6个数据系列.add_yaxis(series_name="GDP", y_axis=total_data["dataGDP"][year], label_opts=opts.LabelOpts(is_show=False)).add_yaxis(series_name="金融", y_axis=total_data["dataFinancial"][year], label_opts=opts.LabelOpts(is_show=False)).add_yaxis(series_name="房地产", y_axis=total_data["dataEstate"][year], label_opts=opts.LabelOpts(is_show=False)).add_yaxis(series_name="第一产业", y_axis=total_data["dataPI"][year], label_opts=opts.LabelOpts(is_show=False)).add_yaxis(series_name="第二产业", y_axis=total_data["dataSI"][year], label_opts=opts.LabelOpts(is_show=False)).add_yaxis(series_name="第三产业", y_axis=total_data["dataTI"][year], label_opts=opts.LabelOpts(is_show=False))# 设置全局配置.set_global_opts(title_opts=opts.TitleOpts(title="{}全国宏观经济指标".format(year), subtitle="数据来自国家统计局"),tooltip_opts=opts.TooltipOpts(is_show=True, trigger="axis", axis_pointer_type="shadow"),legend_opts=opts.LegendOpts(selected_map={"GDP": False, "金融": False, "房地产": False})))# 创建饼图pie = (Pie().add(series_name="GDP占比",data_pair=[["第一产业", total_data["dataPI"]["{}sum".format(year)]],["第二产业", total_data["dataSI"]["{}sum".format(year)]],["第三产业", total_data["dataTI"]["{}sum".format(year)]]],center=["75%", "35%"], radius="28%").set_series_opts(tooltip_opts=opts.TooltipOpts(is_show=True, trigger="item")))return bar.overlap(pie)  # 重叠饼图到柱状图上

通过这段代码,我们可以看到:

  1. 柱状图部分:展示了各地区(name_list)在六个经济指标上的数据,包括GDP、金融、房地产、第一产业、第二产业和第三产业。所有标签都被隐藏以避免图表拥挤。

  2. 图例配置:默认将GDP、金融、房地产三个系列设置为不选中状态(selected_map),因为这三个指标数值通常远大于产业数据,这样设置可以让初始视图更清晰地展示产业结构。

  3. 饼图部分:位于图表右侧(center=["75%", "35%"]),展示了该年份第一、二、三产业在GDP中的占比情况,数据来自各产业的年度总和(如total_data["dataPI"]["{}sum".format(year)])。

  4. 重叠显示:使用.overlap(pie)方法将饼图叠加到柱状图上,实现了两种图表类型的融合展示。

时间轴功能

代码的第二部分创建了时间轴,实现了数据的动态展示:

timeline = Timeline()
for y in range(2002, 2012):timeline.add(get_year_overlap_chart(year=y), time_point=str(y))
timeline.add_schema(is_auto_play=True, play_interval=1000)
timeline.render_notebook()

因为添加了时间轴,图表可以自动播放(is_auto_play=True),每1000毫秒切换一个年份(play_interval=1000),直观地展示2002-2011年十年间经济数据的变化趋势。

图表特点
  1. 多维度数据展示:同时呈现六个经济指标,提供全面的经济图景。
  2. 组合可视化:柱状图展示地区差异,饼图展示产业结构,互补性强。
  3. 交互式体验:时间轴动画展示数据变化,图例可交互切换指标显示。
  4. 数据层次清晰:通过默认隐藏大数值指标,突出展示产业结构比例。

这个图表设计巧妙,既展示了各地区的详细经济数据,又呈现了全国层面的产业结构,同时通过时间轴展示了十年间的变化趋势,是一个信息密度高、交互性强的综合可视化作品。
在这里插入图片描述

图表五:使用字典配置的基础柱状图

这个图表展示了pyecharts库的另一种配置方式——通过字典进行配置,更加灵活简洁。

代码实现解析
from pyecharts.charts import Bar 
from pyecharts.faker import Faker 
from pyecharts.globals import ThemeType c = (Bar({"theme": ThemeType.MACARONS})  # 使用字典配置主题.add_xaxis(Faker.choose())  # 添加X轴数据.add_yaxis("商家A", Faker.values())  # 添加商家A的数据.add_yaxis("商家B", Faker.values())  # 添加商家B的数据.set_global_opts(title_opts={"text": "Bar-通过 dict 进行配置", "subtext": "我也是通过 dict 进行配置的"} )#.render("bar_base_dict_config.html") 
)
c.render_notebook()
核心特点
  1. 字典配置方式:与之前使用opts对象不同,这里直接使用Python字典进行配置。例如:

    • Bar({"theme": ThemeType.MACARONS}):通过字典设置主题
    • title_opts={"text": "Bar-通过 dict 进行配置", "subtext": "我也是通过 dict 进行配置的"}:通过字典设置标题
  2. 马卡龙主题:使用了ThemeType.MACARONS主题,这是pyecharts提供的一种色彩鲜艳、现代感强的主题风格。

  3. 模拟数据:继续使用Faker库生成模拟数据:

    • Faker.choose():生成类别数据作为X轴
    • Faker.values():生成随机数值作为Y轴数据
  4. 简洁明了:代码结构简单,易于理解,适合初学者上手。

与其他图表的对比

与前面的图表相比,这个图表的最大特点是配置方式的不同。pyecharts支持两种主要配置方式:

  • 对象配置:使用opts相关类,如opts.TitleOptsopts.AxisOpts
  • 字典配置:直接使用Python字典,键为配置项名称,值为配置值

两种方式各有优势:对象配置提供了更好的类型提示和自动补全,而字典配置更加灵活简洁。

适用场景

这种基础柱状图适用于:

  • 简单的数据对比展示
  • 快速生成图表原型
  • 学习pyecharts的基础用法
  • 需要使用字典配置方式的场景

这个图表虽然简单,但展示了pyecharts的核心功能和灵活的配置方式,是学习pyecharts的很好起点。

http://www.xdnf.cn/news/16840.html

相关文章:

  • SpringBoot启动项目详解
  • 详解Python标准库之命令行界面库
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • 未来交通:元宇宙技术重塑出行体验
  • SLAM中的非线性优化-2D图优化之零空间实战(十六)
  • Selenium自动化:轻松实现网页操控
  • 归并排序(简单讲解)
  • MySQL 基础
  • linux source命令使用详细介绍
  • 浅拷贝与深拷贝的区别
  • Vue 响应式基础全解析2
  • Python Pandas.unique函数解析与实战教程
  • 24黑马SpringCloud的Docker本地目录挂载出现相关问题解决
  • 《JMM 与 happens-before 原则:并发编程的核心内存语义》
  • 网络常识-子网掩码
  • 暑期算法训练.13
  • stm32F407 实现有感BLDC 六步换相 cubemx配置及源代码(二)
  • 电脑系统中的BCD
  • 排序算法-堆排序
  • ARMv8/v9架构FAR_EL3寄存器介绍
  • Android 13/14/15 默认授权应用权限的实现方法
  • 《深潜React列表渲染:调和算法与虚拟DOM Diff的优化深解》
  • 开疆智能Profinet转Modbus网关连接信捷PLC从站配置案例
  • WPFC#超市管理系统(4)入库管理
  • oect刷入arm系统安装docker
  • 【Redis数据结构详解】特点、用途与实际应用
  • CCF IVC 2025“汽车安全攻防赛” -- Crypto -- WriteUp
  • VAST视频广告技术实现:从零开始搭建视频广告投放系统
  • 文件同步神器-rsync命令讲解
  • linux编译基础知识-库文件标准路径