100天精通Python(可视化篇)——第103天:Pyecharts绘制多种炫酷水球图参数说明+代码实战

文章目录

  • 专栏导读
  • 一、水球图介绍
    • 1. 水球图是什么?
    • 2. 水球图的应用场景
  • 二、水球图类配置选项
    • 1. 导包
    • 2. Liquid类
    • 3. add函数
  • 三、水球图实战
    • 1. 基础水球图
    • 2. 矩形水球图
    • 3. 圆棱角矩形水球图
    • 4. 三角形水球图
    • 5. 菱形水球图
    • 6. 箭头型水球图
    • 7. 修改数据精度
    • 8. 设置无边框
    • 9. 多个并排水球图
  • 书籍推荐(包邮送书)

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

一、水球图介绍

1. 水球图是什么?

水球图(Waterfall chart)是一种数据可视化图表,用于展示一系列数据的增减情况,并突出显示每个数据项对总体变化的贡献程度。它通常以柱状图的形式呈现,每个数据项由一条垂直柱表示,柱的长度表示该数据项的数值大小,上升的柱表示增加的数据项,下降的柱表示减少的数据项。水球图还可以通过不同颜色或者阴影来区分增加和减少的数据项,从而更加直观地展示数据的变化情况。

2. 水球图的应用场景

水球图在以下场景中常被使用:

  1. 财务分析:水球图可以用于展示公司的收入、成本、利润等财务指标的变化情况,帮助分析师和管理者快速了解各个数据项对整体财务状况的影响。

  2. 销售分析:水球图可以用于展示销售额、销售量等指标的变化情况,帮助销售团队了解各个产品或地区的销售情况,并识别出销售增长或下降的原因。

  3. 项目管理:水球图可以用于展示项目的预算、成本、进度等指标的变化情况,帮助项目经理了解项目的执行情况,及时调整资源分配或采取措施来达到项目目标。

  4. 比较分析:水球图可以用于比较不同时间段、不同产品或不同地区的数据变化情况,帮助用户直观地了解各个数据项之间的差异,并快速找出关键因素。

  5. 目标设定:水球图可以用于设定目标和制定计划,通过展示当前状态和目标状态之间的差距,帮助用户明确目标,并制定相应的行动计划。

总的来说,水球图可以帮助用户更好地理解数据的变化趋势和影响因素,从而做出更准确的决策和规划。

二、水球图类配置选项

1. 导包

from pyecharts import options as opts
from pyecharts.charts import Liquid

2. Liquid类

class Liquid(Chart):
    """
    <<< Liquid >>>
    液态图主要用于突出显示数据的百分比。
    """

    def __init__(
        self,
        # 初始化类
        init_opts: types.Init = opts.InitOpts(),
        render_opts: types.RenderInit = opts.RenderOpts(),
    )

3. add函数

add函数主要配置名称,数据,外形,颜色,标签配置项等:

def add(
    self,
    series_name: str,  # 数据系列的名称
    data: types.Sequence,  # 数据序列,用于表示液态图的百分比数据
    *,
    shape: str = "circle",  # 液态图的形状,默认为圆形
    color: types.Optional[types.Sequence[str]] = None,  # 液态图的颜色,可以是一个颜色序列
    background_color: types.Union[str, dict, None] = None,  # 液态图的背景颜色,可以是一个颜色字符串、字典或者None
    is_animation: bool = True,  # 是否开启动画效果,默认为True
    is_outline_show: bool = True,  # 是否显示外边框,默认为True
    outline_border_distance: types.Numeric = 8,  # 外边框与液态图的距离,默认为8
    outline_itemstyle_opts: types.ItemStyle = None,  # 外边框的样式配置项
    center: types.Sequence = None,  # 液态图的中心位置,默认为None
    tooltip_opts: types.Tooltip = None,  # 提示框的配置项
    label_opts: types.Label = opts.LabelOpts(font_size=50, position="inside"),  # 标签的配置项,默认字体大小为50,位置为内部
)

三、水球图实战

1. 基础水球图

代码中,使用Liquid()创建了一个Liquid实例对象。然后使用.add()方法添加数据,此处数据为0.6,表示液态图占比为60%。最后使用.set_global_opts()方法设置图表的全局配置,例如标题。最后通过.render()方法将图表渲染为HTML文件:

from pyecharts.charts import Liquid
from pyecharts import options as opts

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6])  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="基础水球图示例"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("basic_liquid_chart.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

2. 矩形水球图

使用from pyecharts.globals import SymbolType可以绘制以下图形:

  • RECT:矩形
  • ROUND_RECT:圆棱角矩形
  • TRIANGLE:三角形
  • DIAMOND:菱形
  • ARROW:箭头形

注意:传参时上面英文全部要大写!

绘制矩形水球图将往add函数中添加shape=SymbolType.RECT参数即可:

from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolType

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6], shape=SymbolType.RECT)  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="矩形水球图示例"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("矩形水球图示例.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

3. 圆棱角矩形水球图

绘制圆棱角矩形水球图将往add函数中添加shape=SymbolType.ROUND_RECT参数即可:

from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolType

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6], shape=SymbolType.ROUND_RECT)  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="圆棱角矩形水球图示例"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("圆棱角矩形水球图示例.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

4. 三角形水球图

绘制三角形水球图将往add函数中添加shape=SymbolType.TRIANGLE参数即可:

from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolType

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6], shape=SymbolType.TRIANGLE)  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="三角形水球图示例"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("三角形水球图示例.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

5. 菱形水球图

往add函数中添加shape=SymbolType.DIAMOND参数即可绘制菱形水球图:

from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolType

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6], shape=SymbolType.DIAMOND)  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="菱形水球图示例"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("菱形水球图示例.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

6. 箭头型水球图

往add函数中添加shape=SymbolType.ARROW参数即可绘制箭头型水球图:

from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolType

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6], shape=SymbolType.ARROW)  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="箭头形水球图示例"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("箭头形水球图示例.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

7. 修改数据精度

通过设置formatter参数和使用JsCode模块,可以自定义标签的格式化函数,将数据转换为百分比形式:

from pyecharts import options as opts  # 导入配置项模块
from pyecharts.charts import Liquid  # 导入水球图模块
from pyecharts.commons.utils import JsCode  # 导入JsCode模块
from pyecharts.globals import SymbolType  # 导入符号类型模块

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add(
        "lq",
        [0.6666],  # 添加水球图的数据,保留四位小数(也可以继续添加更多数据)
        label_opts=opts.LabelOpts(
            formatter=JsCode(
                """function (param) {
                    return (Math.floor(param.value * 10000) / 100) + '%';
                }"""
            ),  # 设置标签的格式化函数,将数值转为百分比形式
            position="inside",  # 设置标签显示在水球内部
        ),
        shape=SymbolType.ROUND_RECT  # 设置水球图的形状为圆角矩形
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="修改数据精度"))  # 设置图表的标题
)

# 渲染生成 HTML 文件
liquid.render("修改数据精度.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

8. 设置无边框

向add函数添加is_outline_show=False参数即可设置无边框:

from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolType

# 创建 Liquid 实例对象
liquid = (
    Liquid()
    .add("Liquid", [0.6], is_outline_show=False)  # 添加数据,此处数据为0.6,表示液态图占比为60%
    .set_global_opts(title_opts=opts.TitleOpts(title="设置无边框"))  # 设置标题
)

# 渲染生成 HTML 文件
liquid.render("设置无边框水球图示例.html")
# 在Jupyter Notebook中显示
liquid.render_notebook()

运行结果:

9. 多个并排水球图

首先,分别创建了三个水球图对象,每个对象表示一个水球图,设置了不同的数据、位置和形状。然后,创建了一个网格对象,并使用.add()方法将三个水球图对象添加到网格中。最后,使用.render()方法将网格渲染为HTML文件,并使用.render_notebook()方法在Jupyter Notebook中显示网格图表:

from pyecharts import options as opts  # 导入配置项模块
from pyecharts.charts import Grid, Liquid  # 导入网格和水球图模块
from pyecharts.globals import SymbolType  # 导入符号类型模块

# 创建第一个水球图对象
l1 = (
    Liquid()
    .add("lq", [0.3], center=["20%", "50%"], shape=SymbolType.ROUND_RECT)  # 添加水球图的数据和配置,设置为圆角矩形形状
    .set_global_opts(title_opts=opts.TitleOpts(title="并排水球图"))  # 设置水球图的标题
)

# 创建第二个水球图对象
l2 = (
    Liquid()
    .add("lq", [0.6], center=["50%", "50%"], shape=SymbolType.DIAMOND)  # 添加水球图的数据和配置,设置为菱形形状
    .set_global_opts(title_opts=opts.TitleOpts(title=""))  # 设置水球图的标题为空
)

# 创建第三个水球图对象
l3 = (
    Liquid()
    .add("lq", [0.9], center=["80%", "50%"], shape=SymbolType.ARROW)  # 添加水球图的数据和配置,设置为箭头形状
    .set_global_opts(title_opts=opts.TitleOpts(title=""))  # 设置水球图的标题为空
)

# 创建网格对象,并将水球图对象添加到网格中
grid = Grid().add(l1, grid_opts=opts.GridOpts()).add(l2, grid_opts=opts.GridOpts()).add(l3, grid_opts=opts.GridOpts())

# 渲染生成 HTML 文件
grid.render("并排水球图.html")
grid.render_notebook()

运行结果:

书籍推荐(包邮送书)

《Python数据科学项目实战 》

本书包含5个难度由浅入深的案例研究。每个案例研究都以你需要解决的问题的详细陈述开始。问题陈述之后是用2~5章介绍解决问题所需的数据科学技能。这些技能部分涵盖了Python基础库以及数学和算法技术。每个案例研究的最后一章都描述了问题的解决方案。

● 第1章讨论如何使用简单的Python计算概率。

● 第2章介绍概率分布的概念。该章还介绍Matplotlib可视化库,通过它可以对分布进行可视化。

● 第3章讨论如何使用随机模拟来估计概率。该章引入NumPy数值计算库,从而促进有效的模拟执行。

● 第4章包含案例研究的解决方案。

案例研究2从概率扩展到统计。

● 第5章介绍中心性和离散性的简单统计测量。该章还介绍SciPy科学计算库,其中包含一个有用的统计模块。

● 第6章深入探讨可用于进行统计预测的中心极限定理。

● 第7章讨论各种统计推断技术,这些技术可用于将有趣的数据模式与随机噪声区分开。此外,该章说明了错误使用推理的危险以及如何更好地避免这些危险发生。

● 第8章介绍Pandas库,可用于在统计分析之前对表格数据进行预处理。

● 第9章包含案例研究的解决方案。

案例研究3侧重于介绍地理数据的无监督聚类。

● 第10章介绍如何使用中心性度量将数据聚类到组中。该章还引入scikit-learn库以促进高效聚类。

● 第11章侧重于介绍地理数据提取和可视化。在该章中,使用GeoNamesCache库从文本中进行提取并使用Cartopy地图绘制库实现可视化。

● 第12章包含案例研究的解决方案。

案例研究4侧重于介绍使用大规模数值计算的自然语言处理。

● 第13章说明如何使用矩阵乘法有效地计算文本之间的相似度。NumPy的内置矩阵优化被广泛用于此目的。

● 第14章展示如何利用降维来进行更有效的矩阵分析。该章结合scikit-learn的降维方法讨论数学理论。

● 第15章将自然语言处理技术应用于超大文本数据集。该章讨论如何更好地探索和聚类这类文本数据。

● 第16章展示如何使用Beautiful Soup HTML解析库从在线数据中提取文本。

● 第17章包含案例研究的解决方案。

案例研究5侧重于对网络理论和监督机器学习的讨论。

● 第18章结合NetworkX图分析库介绍基本网络理论。

● 第19章展示如何利用网络流在网络数据中寻找聚类。该章将概率模拟和矩阵乘法用于实现有效的聚类。

● 第20章介绍一种基于网络理论的简单监督机器学习算法。该章还使用scikit-learn说明常见的机器学习评估技术。

● 第21章讨论其他机器学习技术,这些技术依赖内存高效的线性分类器。

● 第22章深入探讨之前介绍的监督学习方法的缺陷。随后使用非线性决策树分类器来规避这些缺陷。

● 第23章包含案例研究的解决方案。

  • 京东购买链接 :https://item.jd.com/13563455.html

抽奖送书老规矩(不点赞收藏中奖无效):注意记得关注博主不然中奖了还不知道!!!

  • 1. 点赞收藏文章
  • 2. 评论区留言:人生苦短,我用Python!!!(留言才能进入奖池,每人最多留言三条)
  • 3. 周六八点爬虫抽奖5人

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年10月17日
下一篇 2023年10月17日

相关推荐