作者名片
🤵♂️ 个人主页:@抱抱宝
😄微信公众号:宝宝数模AI(见文末)
✍🏻作者简介:阿里云专家博主 | 持续分享机器学习、数学建模、数据分析、AI人工智能领域相关知识,和大家一起进步!
🐋 如果文章对你有帮助的话,
欢迎👍🏻点赞📂收藏 +关注
在使用 Pyecharts 进行数据可视化的过程中,柱状图是最常用的图表类型之一,它能够清晰地展示不同类别之间的数据比较。上一篇文章我们已经初步了解了如何使用 Pyecharts 绘制简单的柱状图,本篇将深入探讨柱状图的更多功能和多样化呈现方式,让我们的可视化更加丰富和生动。
一、堆叠柱状图
堆叠柱状图是一种特殊的柱状图,它将多个数据系列堆叠在一起,用于展示每个类别中不同数据系列的总和,方便我们对比不同类别下的总量以及各数据系列在总量中的占比。
# 导入所需的库
from pyecharts.charts import Bar
from pyecharts import options as opts
# 创建一个 Bar 实例
stacked_bar = Bar()
# 添加横坐标数据,例如不同的产品类别
stacked_bar.add_xaxis(['产品 A', '产品 B', '产品 C', '产品 D'])
# 添加纵坐标数据系列,并设置 stack 参数为 'stack1' 表示这些数据系列将堆叠在一起
stacked_bar.add_yaxis('系列 1', [10, 20, 30, 40], stack="stack1")
stacked_bar.add_yaxis('系列 2', [20, 30, 40, 50], stack="stack1")
stacked_bar.add_yaxis('系列 3', [30, 40, 50, 60], stack="stack1")
# 设置全局选项,包括图表标题和坐标轴标签
stacked_bar.set_global_opts(
title_opts=opts.TitleOpts(title="堆叠柱状图示例"),
xaxis_opts=opts.AxisOpts(name="产品类别"),
yaxis_opts=opts.AxisOpts(name="数量")
)
# 在 Jupyter Notebook 中显示图表
stacked_bar.render_notebook()
代码解释:
- 首先,我们导入了
Bar
类和options
模块。 - 创建
Bar
实例stacked_bar
作为我们的柱状图对象。 - 使用
add_xaxis
方法添加了横坐标数据,代表不同的产品类别。 - 然后使用
add_yaxis
方法添加了三个数据系列,每个系列都有对应的名称和数据列表,关键在于stack="stack1"
参数,它将这些数据系列堆叠在一起。当我们将不同数据系列的stack
参数设置为相同的值时,它们将堆叠显示。 - 通过
set_global_opts
方法设置了图表的标题和坐标轴的名称,使图表更具可读性。 - 最后使用
render_notebook
方法将图表在 Jupyter Notebook 中显示。
从生成的堆叠柱状图中,我们可以清晰地看到每个产品类别中三个数据系列的总和,同时可以比较不同类别之间的总量。
二、柱状图数据标签自定义
为了让柱状图更加清晰和易于理解,我们可以自定义数据标签,例如显示数据的具体值、百分比等信息,甚至可以对标签的样式进行调整。
# 导入所需的库
from pyecharts.charts import Bar
from pyecharts import options as opts
# 创建一个 Bar 实例
bar_label_custom = Bar()
# 添加横坐标数据
bar_label_custom.add_xaxis(['类别 1', '类别 2', '类别 3'])
# 添加纵坐标数据
bar_label_custom.add_yaxis('数据系列', [80, 90, 100])
# 设置系列选项,包括自定义数据标签
bar_label_custom.set_series_opts(
label_opts=opts.LabelOpts(
position="inside", # 标签位置设置为内部
formatter="{c}" # 显示数据的具体值
)
)
# 设置全局选项,包括图表标题和坐标轴标签
bar_label_custom.set_global_opts(
title_opts=opts.TitleOpts(title="自定义数据标签的柱状图"),
xaxis_opts=opts.AxisOpts(name="类别"),
yaxis_opts=opts.AxisOpts(name="数值")
)
# 在 Jupyter Notebook 中显示图表
bar_label_custom.render_notebook()
代码解释:
- 首先,我们导入所需的库并创建
Bar
实例bar_label_custom
。 - 接着添加横纵坐标数据。
- 使用
set_series_opts
方法设置系列选项,通过opts.LabelOpts
来自定义数据标签,将position
设置为"inside"
表示将标签放在柱状图内部,将formatter
设置为"{c}"
表示显示数据的具体值。 - 然后使用
set_global_opts
方法设置图表的标题和坐标轴的名称。 - 最后使用
render_notebook
方法显示图表。
通过自定义数据标签,我们可以将数据直接显示在柱状图内部,方便查看数据的具体数值,让数据更加直观。
三、柱状图颜色自定义
有时候,我们可能希望根据自己的需求来设置柱状图的颜色,以增强图表的视觉效果或突出某些信息。
# 导入所需的库
from pyecharts.charts import Bar
from pyecharts import options as opts
# 创建一个 Bar 实例
bar_color_custom = Bar()
# 添加横坐标数据
bar_color_custom.add_xaxis(['类别 A', '类别 B', '类别 C'])
# 添加纵坐标数据
bar_color_custom.add_yaxis(
'数据系列',
[70, 80, 90],
itemstyle_opts=opts.ItemStyleOpts(color="#FF0000") # 设置为红色
)
# 设置全局选项,包括图表标题和坐标轴标签
bar_color_custom.set_global_opts(
title_opts=opts.TitleOpts(title="自定义颜色的柱状图"),
xaxis_opts=opts.AxisOpts(name="类别"),
yaxis_opts=opts.AxisOpts(name="数值")
)
# 在 Jupyter Notebook 中显示图表
bar_color_custom.render_notebook()
代码解释:
- 导入库并创建
Bar
实例bar_color_custom
。 - 添加横纵坐标数据。
- 使用
add_yaxis
方法添加数据系列时,通过itemstyle_opts=opts.ItemStyleOpts(color="#FF0000")
来设置柱状图的颜色,这里我们将颜色设置为红色#FF0000
。 - 使用
set_global_opts
方法设置图表的标题和坐标轴的名称。 - 最后使用
render_notebook
方法显示图表。
这样我们就可以得到一个颜色为红色的柱状图。你可以根据自己的喜好或数据特点来设置不同的颜色,比如使用 RGB 值、十六进制颜色代码或预定义的颜色名称。例如,使用不同的颜色来区分不同的数据系列,或根据数值大小渐变颜色以增强视觉效果。
四、综合示例
为了更好地理解以上各个技巧的应用,下面我们将这些功能结合起来,创建一个综合性的柱状图。
# 导入所需的库
from pyecharts.charts import Bar
from pyecharts import options as opts
# 创建一个 Bar 实例
bar_comprehensive = Bar()
# 添加横坐标数据
categories = ['类别 A', '类别 B', '类别 C', '类别 D']
bar_comprehensive.add_xaxis(categories)
# 添加多个数据系列,并设置堆叠
bar_comprehensive.add_yaxis(
'系列 1',
[10, 20, 30, 40],
stack="stack1",
itemstyle_opts=opts.ItemStyleOpts(color="#1f77b4"), # 蓝色
label_opts=opts.LabelOpts(position="inside", formatter="{c}")
)
bar_comprehensive.add_yaxis(
'系列 2',
[15, 25, 35, 45],
stack="stack1",
itemstyle_opts=opts.ItemStyleOpts(color="#ff7f0e"), # 橙色
label_opts=opts.LabelOpts(position="inside", formatter="{c}")
)
bar_comprehensive.add_yaxis(
'系列 3',
[20, 30, 40, 50],
stack="stack1",
itemstyle_opts=opts.ItemStyleOpts(color="#2ca02c"), # 绿色
label_opts=opts.LabelOpts(position="inside", formatter="{c}")
)
# 设置全局选项
bar_comprehensive.set_global_opts(
title_opts=opts.TitleOpts(title="综合示例柱状图"),
xaxis_opts=opts.AxisOpts(name="类别"),
yaxis_opts=opts.AxisOpts(name="数量"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="shadow")
)
# 在 Jupyter Notebook 中显示图表
bar_comprehensive.render_notebook()
代码解释:
- 创建
Bar
实例bar_comprehensive
。 - 添加横坐标数据
categories
。 - 添加三个数据系列,每个系列都设置了堆叠
stack="stack1"
,不同的颜色通过itemstyle_opts
设置。 - 使用
label_opts
将数据标签显示在柱状图内部,并显示具体值。 - 设置全局选项,包括图表标题、坐标轴名称和工具提示,使图表更加友好和易于交互。
- 最后通过
render_notebook
方法显示图表。
通过这个综合示例,我们展示了如何将堆叠、颜色自定义和数据标签自定义等多种技巧结合在一起,创建出一个功能丰富且视觉效果出色的柱状图。
五、总结
通过以上几个示例,我们深入探讨了柱状图在 Pyecharts 中的多样呈现方式,包括堆叠柱状图、自定义数据标签和自定义颜色。这些功能可以帮助你根据不同的场景和需求,创建出更加丰富多彩、清晰易懂的柱状图。在后续的文章中,我们将继续探索其他类型的图表及更高级的可视化技巧,敬请期待!