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

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

欢迎来到每日五个pyecharts可视化图表系列的第四篇文章!在本文中,我们将继续探索柱状图的更多高级用法,包括不同系列柱间距离、自定义柱状颜色、多Y轴组合展示、标记点添加以及Y轴格式化等实用技巧。pyecahts源码

无论是数据分析、报告制作还是数据可视化展示,这些技巧都能让你的图表更加专业、美观且富有洞察力。让我们开始学习吧!

1. 不同系列柱间距离的柱状图

在柱状图中,我们可以通过调整不同系列之间的距离来优化图表的视觉效果。适当的间距可以使图表更加清晰易读,突出数据之间的对比关系。

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(), gap="0%")
    .add_yaxis("商家B", Faker.values(), gap="0%")
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-不同系列柱间距离"))
    #.render("bar_different_series_gap.html")
    
)
c.render_notebook()

代码解析

  1. 导入必要的模块:我们导入了optionsBarFaker模块。Faker模块用于生成模拟数据,方便我们快速创建图表。

  2. 创建柱状图对象:通过Bar()创建一个柱状图实例。

  3. 添加X轴数据:使用add_xaxis()方法添加X轴数据,这里使用Faker.choose()生成一组随机分类数据。

  4. 添加Y轴数据:使用add_yaxis()方法添加Y轴数据,这里我们添加了两组数据(商家A和商家B),每组数据都使用Faker.values()生成随机数值。

    • 关键参数gap="0%":设置了同一分类下不同系列柱子之间的距离为0%,使柱子紧密排列在一起,增强数据对比效果。
  5. 设置全局选项title_opts设置图表标题为"Bar-不同系列柱间距离"

  6. 渲染图表:使用render_notebook()方法在Jupyter Notebook中渲染图表,也可以使用render()方法将图表保存为HTML文件。

图表特点与应用场景

在这里插入图片描述

  • 紧密排列:通过设置gap="0%",使同一分类下的不同系列柱子紧密排列,便于直观比较
  • 数据对比:两组数据并列展示,清晰呈现不同商家在各个分类下的业绩差异
  • 空间优化:适合在有限空间内展示多组数据,提高信息密度
  • 适用场景:适合业务报告、销售数据分析、市场份额比较等需要同时展示多组数据的场景

通过调整柱间距离,我们可以根据实际需求优化图表的布局和视觉效果,使数据展示更加清晰有效。

2. 自定义柱状颜色的柱状图

在数据可视化中,颜色是传递信息的重要工具。通过自定义柱状图的颜色,我们可以根据数据值的大小或范围来直观地区分不同的数据点,增强图表的可读性和信息传达效果。

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker


color_function = """
         function (params) {
             if (params.value > 0 && params.value < 50) {
                 return 'red';
             } else if (params.value > 50 && params.value < 100) {
                 return 'blue';
             }
             return 'green';
         }
         """
c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis(
        "商家A",
        Faker.values(),
        itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
    )
    .add_yaxis(
        "商家B",
        Faker.values(),
        itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
    )
    .add_yaxis(
        "商家C",
        Faker.values(),
        itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-自定义柱状颜色"))
    #.render("bar_custom_bar_color.html")
    
)
c.render_notebook()

代码解析

  1. 导入必要的模块:我们导入了optionsBarJsCodeFaker模块。JsCode模块用于在Python代码中嵌入JavaScript代码,实现自定义颜色逻辑。

  2. 定义颜色函数:使用JavaScript代码定义了一个颜色函数,根据数据值的范围返回不同的颜色:

    • 数据值在0到50之间:红色
    • 数据值在50到100之间:蓝色
    • 其他数据值:绿色
  3. 创建柱状图对象:通过Bar()创建一个柱状图实例。

  4. 添加X轴数据:使用add_xaxis()方法添加X轴数据,这里使用Faker.choose()生成一组随机分类数据。

  5. 添加Y轴数据:使用add_yaxis()方法添加三组Y轴数据(商家A、商家B和商家C),每组数据都使用Faker.values()生成随机数值。

    • 关键参数itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)):应用自定义颜色函数到每个柱子。
  6. 设置全局选项title_opts设置图表标题为"Bar-自定义柱状颜色"

  7. 渲染图表:使用render_notebook()方法在Jupyter Notebook中渲染图表,也可以使用render()方法将图表保存为HTML文件。

图表特点与应用场景

在这里插入图片描述

  • 动态颜色编码:根据数据值的大小自动分配不同颜色,直观反映数据分布特征
  • 多系列展示:同时展示三组数据,便于比较不同商家的业绩表现
  • JavaScript集成:通过JsCode模块无缝集成JavaScript代码,实现复杂的颜色逻辑
  • 适用场景:适合数据分布分析、业绩评估、风险预警等需要根据数值范围区分数据的场景

通过自定义柱状颜色,我们可以让图表更加直观地传达数据背后的信息,帮助读者快速理解数据的分布特征和规律。

3. 多Y轴组合柱状图与折线图

在实际数据分析中,我们经常需要同时展示不同类型的数据,这些数据可能具有不同的量纲和范围。多Y轴图表可以帮助我们在同一个图表中展示多种数据类型,同时保持数据的可读性。下面我们创建一个包含柱状图和折线图的多Y轴组合图表。

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


"""
Gallery 使用 pyecharts 1.0.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=multiple-y-axis` 

目前无法实现的功能:

1、暂无
"""

colors = ["#5793f3", "#d14a61", "#675bba"]
x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
legend_list = ["蒸发量", "降水量", "平均温度"]
evaporation_capacity = [
    2.0,
    4.9,
    7.0,
    23.2,
    25.6,
    76.7,
    135.6,
    162.2,
    32.6,
    20.0,
    6.4,
    3.3,
]
rainfall_capacity = [
    2.6,
    5.9,
    9.0,
    26.4,
    28.7,
    70.7,
    175.6,
    182.2,
    48.7,
    18.8,
    6.0,
    2.3,
]
average_temperature = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]


bar = (
    Bar(init_opts=opts.InitOpts(width="1260px", height="720px"))
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="蒸发量", y_axis=evaporation_capacity, yaxis_index=0, color=colors[1]
    )
    .add_yaxis(
        series_name="降水量", y_axis=rainfall_capacity, yaxis_index=1, color=colors[0]
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="蒸发量",
            type_="value",
            min_=0,
            max_=250,
            position="right",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[1])
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
        )
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",
            name="温度",
            min_=0,
            max_=25,
            position="left",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[2])
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
            ),
        )
    )
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            type_="value",
            name="降水量",
            min_=0,
            max_=250,
            position="right",
            offset=80,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[0])
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
        ),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    )
)

line = (
    Line()
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="平均温度", y_axis=average_temperature, yaxis_index=2, color=colors[2]
    )
)

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

代码解析

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

  2. 定义数据

    • colors:定义了三种颜色,分别用于降水量、蒸发量和平均温度
    • x_data:定义了X轴的月份数据
    • evaporation_capacity:定义了蒸发量数据
    • rainfall_capacity:定义了降水量数据
    • average_temperature:定义了平均温度数据
  3. 创建柱状图对象:通过Bar()创建一个柱状图实例,并设置了图表的宽度和高度。

  4. 添加X轴和Y轴数据

    • 使用add_xaxis()方法添加X轴数据
    • 使用add_yaxis()方法添加两组Y轴数据(蒸发量和降水量),并指定了对应的Y轴索引
  5. 扩展Y轴

    • 使用extend_axis()方法添加了两个额外的Y轴:右侧的蒸发量轴和左侧的温度轴
    • 为每个Y轴设置了名称、范围、位置、颜色和标签格式
  6. 设置全局选项

    • 设置了主Y轴(降水量)的选项
    • 设置了tooltip选项,启用了坐标轴交叉指针
  7. 创建折线图对象:通过Line()创建一个折线图实例,用于展示平均温度数据

  8. 叠加图表:使用overlap()方法将折线图叠加在柱状图上

  9. 渲染图表:使用render_notebook()方法在Jupyter Notebook中渲染图表,也可以使用render()方法将图表保存为HTML文件

图表特点与应用场景

在这里插入图片描述

  • 多数据类型展示:同时展示柱状图(蒸发量、降水量)和折线图(平均温度),适合对比不同类型的数据
  • 多Y轴设计:左侧和右侧分别设置不同的Y轴,解决了不同量纲数据展示的问题
  • 数据关联分析:便于观察温度与降水量、蒸发量之间的关系
  • 自定义样式:为不同的数据系列设置了独特的颜色,增强了图表的可读性
  • 适用场景:适合气象数据分析、环境监测、工业生产数据监控等需要同时展示多种相关数据的场景

通过多Y轴组合图表,我们可以在一个视图中同时观察多种数据的变化趋势和相互关系,提高数据分析的效率和洞察力。

4. 带有标记点的柱状图

在数据可视化中,标记点是一种有效的数据强调方式。通过在图表中添加最大值、最小值或平均值等标记点,我们可以快速捕捉到数据的关键特征,提高图表的信息传达效率。

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-MarkPoint(指定类型)")) 
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False), 
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_="max", name="最大值"), 
                opts.MarkPointItem(type_="min", name="最小值"), 
                opts.MarkPointItem(type_="average", name="平均值"), 
            ] 
        ), 
    ) 
    #.render("bar_markpoint_type.html") 
) 
c.render_notebook()

代码解析

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

  2. 创建柱状图对象:通过Bar()创建一个柱状图实例。

  3. 添加X轴数据:使用add_xaxis()方法添加X轴数据,这里使用Faker.choose()生成一组随机分类数据。

  4. 添加Y轴数据:使用add_yaxis()方法添加两组Y轴数据(商家A和商家B),每组数据都使用Faker.values()生成随机数值。

  5. 设置全局选项title_opts设置图表标题为"Bar-MarkPoint(指定类型)"

  6. 设置系列选项

    • label_opts=opts.LabelOpts(is_show=False):隐藏数据标签,使图表更加简洁
    • markpoint_opts=opts.MarkPointOpts():设置标记点选项
      • data参数中添加了三个标记点:最大值、最小值和平均值
  7. 渲染图表:使用render_notebook()方法在Jupyter Notebook中渲染图表,也可以使用render()方法将图表保存为HTML文件。

图表特点与应用场景

在这里插入图片描述

  • 数据强调:通过标记点直观展示数据的最大值、最小值和平均值,帮助快速把握数据特征
  • 双系列对比:同时展示两组数据,便于比较不同商家在各个分类下的表现
  • 简洁清晰:隐藏了数据标签,避免图表过于拥挤,同时通过标记点保留了关键信息
  • 适用场景:适合销售数据分析、业绩评估、质量控制等需要突出数据极值和中心趋势的场景

通过添加标记点,我们可以使图表更加直观地传达数据的重要特征,帮助读者快速理解数据的分布和规律。

5. Y轴格式化的柱状图

在数据可视化中,Y轴的格式化是一个重要的细节。通过自定义Y轴标签的格式,我们可以使图表更加清晰地传达数据的含义,特别是当数据具有特定单位或需要特殊格式展示时。

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-Y 轴 formatter"), 
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} /月")), 
    ) 
    #.render("bar_yaxis_formatter.html") 
) 
c.render_notebook()

代码解析

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

  2. 创建柱状图对象:通过Bar()创建一个柱状图实例。

  3. 添加X轴数据:使用add_xaxis()方法添加X轴数据,这里使用Faker.choose()生成一组随机分类数据。

  4. 添加Y轴数据:使用add_yaxis()方法添加两组Y轴数据(商家A和商家B),每组数据都使用Faker.values()生成随机数值。

  5. 设置全局选项

    • title_opts设置图表标题为"Bar-Y 轴 formatter"
    • yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} /月")):设置Y轴标签格式,在每个数值后添加"/月"单位
  6. 渲染图表:使用render_notebook()方法在Jupyter Notebook中渲染图表,也可以使用render()方法将图表保存为HTML文件。

图表特点与应用场景

在这里插入图片描述

  • 单位清晰:通过Y轴格式化,明确标注数据的单位,避免歧义
  • 双系列对比:同时展示两组数据,便于比较不同商家在各个分类下的表现
  • 自定义格式:可以根据需求灵活设置Y轴标签的格式,如添加单位、百分比等
  • 适用场景:适合月度销售额、月度产量、月度用户增长等需要明确时间单位的场景

通过Y轴格式化,我们可以使图表更加专业和清晰,帮助读者准确理解数据的含义和单位。

总结与展望

在本文中,我们学习了五种不同风格和功能的柱状图可视化技巧,这些技巧能够显著提升你的数据可视化效果:

  1. 不同系列柱间距离的柱状图:通过调整gap参数,优化同一分类下不同系列柱子之间的距离,让数据对比更加清晰直观。
  2. 自定义柱状颜色的柱状图:使用JavaScript函数实现根据数据值范围自动分配颜色,让数据分布特征一目了然。
  3. 多Y轴组合柱状图与折线图:通过多Y轴设计,在同一图表中展示不同类型和量纲的数据,揭示数据间的隐藏关系。
  4. 带有标记点的柱状图:通过添加最大值、最小值和平均值标记点,快速捕捉数据的关键特征和趋势。
  5. Y轴格式化的柱状图:通过自定义Y轴标签格式,明确标注数据单位,避免数据解读歧义。

这些技巧从数据对比优化、颜色编码、多数据类型展示,到数据特征强调和单位格式化,全面覆盖了柱状图的高级应用场景。无论是制作数据分析报告、业务展示图表还是学术研究可视化,这些技巧都能让你的图表更加专业、美观且富有洞察力。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言讨论。后续我们还将探索更多pyecharts可视化技巧,敬请期待!


网站公告

今日签到

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