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

发布于:2025-08-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

在数据可视化领域,柱状图是最常用的图表类型之一。它能够清晰地展示不同类别的数据对比,帮助我们快速洞察数据背后的规律。今天,我们将继续探索pyecharts库中的柱状图功能,带来5个实用的可视化案例。pyecahts源码

环境准备

在开始之前,请确保你已经安装了pyecharts库。如果没有安装,可以使用以下命令进行安装:

pip install pyecharts

第一个图表:Bar-Brush示例

应用场景

当你需要比较多个类别数据,并且希望能够交互式地查看部分数据细节时,Brush功能就非常实用。例如,在销售数据分析中,你可以使用Brush功能聚焦查看某个时间段或某个产品类别的详细数据。

我们从一个基础但实用的柱状图开始,这个图表展示了两个商家在不同产品类别上的销售数据,并添加了Brush交互功能。

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-Brush示例", subtitle="我是副标题"),
        brush_opts=opts.BrushOpts(),
    )
    #.render("bar_with_brush.html")
)
c.render_notebook()

代码解释

  1. 首先,我们导入了必要的库和模块:

    • options 用于设置图表的各种配置项
    • Bar 用于创建柱状图
    • Faker 用于生成模拟数据(在实际应用中,你会使用真实数据)
  2. 然后,我们创建了一个Bar对象,并添加了x轴和y轴数据:

    • add_xaxis(Faker.choose()) 使用Faker生成随机的类别数据作为x轴
    • add_yaxis("商家A", Faker.values())add_yaxis("商家B", Faker.values()) 分别添加了两个商家的销售数据
  3. 接下来,我们设置了全局配置项:

    • title_opts 设置了图表的标题和副标题
    • brush_opts 添加了Brush交互功能,允许用户通过拖动来选择图表的一部分数据进行查看
  4. 最后,我们使用render_notebook()方法在Jupyter Notebook中渲染图表。如果你想将图表保存为HTML文件,可以取消注释render方法。

图表效果

执行上述代码后,你将看到一个带有标题和副标题的柱状图,图表中有两个系列的数据(商家A和商家B),并且支持Brush交互。你可以通过拖动鼠标来选择图表的一部分区域,以便更详细地查看该区域的数据。
在这里插入图片描述

第二个图表:Bar-DataZoom(slider-水平)

应用场景

当你有大量的类别数据或时间序列数据需要展示时,DataZoom功能可以帮助用户聚焦查看数据的特定部分。例如,展示一年的销售数据时,用户可以通过滑动条查看某个季度或月份的详细数据。

接下来,我们将介绍一个带有水平滑动条的数据缩放柱状图。这个图表特别适合展示时间序列数据或大量类别的数据,可以让用户通过滑动条来查看数据的不同部分。

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar()
    .add_xaxis(Faker.days_attrs)
    .add_yaxis("商家A", Faker.days_values)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
        datazoom_opts=opts.DataZoomOpts(),
    )
    #.render("bar_datazoom_slider.html")
)
c.render_notebook()

代码解释

  1. 我们同样导入了必要的库和模块:optionsBarFaker

  2. 创建Bar对象并添加数据:

    • add_xaxis(Faker.days_attrs) 使用Faker生成日期属性作为x轴数据
    • add_yaxis("商家A", Faker.days_values) 添加商家A的每日销售数据
  3. 设置全局配置项:

    • title_opts 设置图表标题为"Bar-DataZoom(slider-水平)"
    • datazoom_opts 添加数据缩放功能,默认会在图表底部显示一个水平滑动条
  4. 最后使用render_notebook()方法在Jupyter Notebook中渲染图表。

图表效果

执行代码后,你将看到一个带有水平滑动条的柱状图。通过拖动滑动条,你可以放大或缩小图表的显示范围,查看不同日期的数据。这对于展示大量数据点时特别有用,可以帮助你更清晰地观察数据的细节。
在这里插入图片描述

第三个图表:Bar-显示 ToolBox

应用场景

当你需要为图表添加更多交互功能,如保存图表、查看数据详情或进行区域缩放时,ToolBox功能就非常有用。这在需要与他人共享图表或深入分析数据时特别实用。

接下来,我们将介绍一个带有工具箱(ToolBox)的柱状图。这个图表提供了一系列实用的工具,如保存图表、数据视图切换、区域缩放等功能,可以增强用户与图表的交互体验。

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-显示 ToolBox"),
        toolbox_opts=opts.ToolboxOpts(),
        legend_opts=opts.LegendOpts(is_show=False),
    )
    #.render("bar_toolbox.html")
)
c.render_notebook()

代码解释

  1. 我们同样导入了必要的库和模块:optionsBarFaker

  2. 创建Bar对象并添加数据:

    • add_xaxis(Faker.choose()) 使用Faker生成随机类别数据作为x轴
    • add_yaxis("商家A", Faker.values())add_yaxis("商家B", Faker.values()) 分别添加了两个商家的销售数据
  3. 设置全局配置项:

    • title_opts 设置图表标题为"Bar-显示 ToolBox"
    • toolbox_opts 添加工具箱功能,默认包含保存、数据视图、区域缩放等工具
    • legend_opts 设置图例不显示(因为我们只有两个系列,且在y轴标签中已经标明)
  4. 最后使用render_notebook()方法在Jupyter Notebook中渲染图表。

图表效果

执行代码后,你将看到一个带有工具箱的柱状图。在图表的右上角,你可以看到一系列工具按钮,包括:

  • 保存图表到本地
  • 切换数据视图(表格形式展示数据)
  • 区域缩放(选择图表的某个区域进行放大)
  • 重置图表

这些工具可以帮助用户更好地查看和分析数据,增强了图表的交互性和实用性。
在这里插入图片描述

第四个图表:混合柱状图和折线图

应用场景

当你需要同时展示不同类型的数据(如数量和趋势)并分析它们之间的关系时,混合图表是一个很好的选择。例如,在气象数据分析中,你可以同时展示降水量(柱状图)和温度变化(折线图),以观察它们之间的相关性。

接下来,我们将介绍一个混合了柱状图和折线图的图表。这个图表可以同时展示不同类型的数据,非常适合比较相关性数据,比如这里我们将展示蒸发量、降水量和平均温度的关系。

import pyecharts.options as opts
from pyecharts.charts import Bar, Line

"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=mix-line-bar` 

目前无法实现的功能:

1、暂无
"""

x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]

bar = (
    Bar()
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="蒸发量",
        y_axis=[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="降水量",
        y_axis=[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
        label_opts=opts.LabelOpts(is_show=False),
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="温度",
            type_="value",
            min_=0,
            max_=25,
            interval=5,
            axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
        )
    )
    .set_global_opts(
        tooltip_opts=opts.TooltipOpts(
            is_show=True, trigger="axis", axis_pointer_type="cross"
        ),
        xaxis_opts=opts.AxisOpts(
            type_="category",
            axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
        ),
        yaxis_opts=opts.AxisOpts(
            name="水量",
            type_="value",
            min_=0,
            max_=250,
            interval=50,
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
)

line = (
    Line()
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="平均温度",
        yaxis_index=1,
        y_axis=[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
        label_opts=opts.LabelOpts(is_show=False),
    )
)

#bar.overlap(line).render("mixed_bar_and_line.html")
bar.overlap(line).render_notebook()

代码解释

  1. 我们导入了必要的库和模块:optionsBarLine

  2. 定义了x轴数据,这里是一年的12个月份。

  3. 创建Bar对象并添加数据:

    • add_xaxis(xaxis_data=x_data) 设置x轴数据为月份
    • add_yaxis("蒸发量", ...) 添加蒸发量数据
    • add_yaxis("降水量", ...) 添加降水量数据
    • extend_axis(...) 扩展了一个y轴用于显示温度数据
  4. 设置柱状图的全局配置项:

    • tooltip_opts 设置提示框,当鼠标悬停时显示数据
    • xaxis_opts 设置x轴为分类轴
    • yaxis_opts 设置主y轴(左侧)为水量单位
  5. 创建Line对象并添加温度数据:

    • add_xaxis(xaxis_data=x_data) 设置x轴数据
    • add_yaxis("平均温度", ...) 添加温度数据,并指定使用扩展的y轴(右侧)
  6. 最后使用overlap方法将折线图叠加到柱状图上,并使用render_notebook()方法在Jupyter Notebook中渲染图表。

图表效果

执行代码后,你将看到一个混合了柱状图和折线图的图表。左侧y轴显示水量(毫升),右侧y轴显示温度(摄氏度)。柱状图展示了每个月的蒸发量和降水量,折线图展示了每个月的平均温度。通过这个图表,你可以直观地观察到温度与水量之间的关系,例如夏季温度高时,蒸发量和降水量也相应增加。
在这里插入图片描述

第五个图表: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(), stack="stack1")
    .add_yaxis("商家B", Faker.values(), stack="stack1")
    .add_yaxis("商家C", Faker.values())
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(部分)"))
    #.render("bar_stack1.html")
)
c.render_notebook()

代码解释

  1. 我们导入了必要的库和模块:optionsBarFaker

  2. 创建Bar对象并添加数据:

    • add_xaxis(Faker.choose()) 使用Faker生成随机类别数据作为x轴
    • add_yaxis("商家A", Faker.values(), stack="stack1")add_yaxis("商家B", Faker.values(), stack="stack1") 分别添加了两个商家的销售数据,并设置它们堆叠显示(使用相同的stack参数值)
    • add_yaxis("商家C", Faker.values()) 添加了第三个商家的销售数据,没有设置stack参数,因此它将独立显示
  3. 设置系列配置项:

    • label_opts 设置标签不显示,使图表更简洁
  4. 设置全局配置项:

    • title_opts 设置图表标题为"Bar-堆叠数据(部分)"
  5. 最后使用render_notebook()方法在Jupyter Notebook中渲染图表。

图表效果

执行代码后,你将看到一个部分堆叠的柱状图。图表中,商家A和商家B的数据会堆叠显示,而商家C的数据会独立显示。这种展示方式可以让你同时比较堆叠数据的总量和各个系列的独立数据,非常适合分析复杂的类别数据。通过悬停鼠标,你可以查看每个数据点的具体数值。
在这里插入图片描述

总结

在本文中,我们介绍了pyecharts库中5种实用的柱状图功能:

  1. Bar-Brush示例:支持交互式区域选择,便于聚焦查看部分数据
  2. Bar-DataZoom:通过滑动条实现数据缩放,适合展示大量数据
  3. Bar-显示 ToolBox:提供多种交互工具,增强用户体验
  4. 混合柱状图和折线图:同时展示不同类型数据,便于分析相关性
  5. Bar-堆叠数据(部分):展示数据组成和总量的关系

pyecharts库提供了丰富的可视化功能,不仅使用简单,而且生成的图表美观且交互性强。无论是数据分析、报告制作还是数据展示,pyecharts都是一个非常实用的工具。

如果你对pyecharts库的其他功能感兴趣,或者有任何问题或建议,欢迎在评论区留言讨论。

注意事项

  1. 确保安装了正确版本的pyecharts库,不同版本之间可能存在语法差异
  2. 在实际应用中,建议使用真实数据替换Faker生成的模拟数据
  3. 对于复杂图表,建议先了解基础功能,再逐步添加高级特性
  4. pyecharts支持多种输出格式,包括HTML、图片和Notebook渲染,可以根据需要选择
  5. 在使用扩展功能(如混合图表)时,注意各组件之间的兼容性

让我们一起探索数据可视化的美妙世界!


网站公告

今日签到

点亮在社区的每一天
去签到