数据可视化是数据分析的关键部分之一,它可以帮助我们更好地理解和阐释数据。在本篇博客中,我将介绍如何使用Python可视化库pyecharts绘制一个堆叠条形图,并讲解如何通过分享代码和数据来教会他人绘制可视化图表。
数据概览:
首先,让我们来看看我们要可视化的数据。在这里,我们将使用全国药店中药饮片供应商的占比情况。我们有五个年份的数据,包括跨国企业占比和本土企业占比。
全国药店中药饮片供应商占比情况
年份(年) | 跨国企业占比(%) | 本土企业占比(%) |
2019 | 20.3 | 79.7 |
2020 | 22.0 | 78.0 |
2021 | 23.5 | 76.5 |
2022 | 22.5 | 77.5 |
2023 | 22.3 | 77.7 |
可视化实现:
接下来,我们需要使用Python编写代码来绘制双轴柱状图。在这里,我们将使用pyecharts库。
from pyecharts import options as opts # 导入pyecharts的配置模块opts
from pyecharts.charts import Bar # 导入pyecharts的柱状图模块Bar
- 导入pyecharts的配置模块
opts
,用于设置图表的参数。 - 导入pyecharts的柱状图模块
Bar
,用于创建柱状图对象。
# 定义横轴数据
x_data = ["2019", "2020", "2021", "2022", "2023"]
# 定义第一组纵轴数据(跨国企业占比)
y_data1 = [20.3, 22.0, 23.5, 22.5, 22.3]
# 定义第二组纵轴数据(本土企业占比)
y_data2 = [79.7, 78.0, 76.5, 77.5, 77.7]
- 定义横轴数据
x_data
,包含了五个年份。 - 定义第一组纵轴数据
y_data1
,表示跨国企业的占比。 - 定义第二组纵轴数据
y_data2
,表示本土企业的占比。
c = (
Bar() # 使用Bar类创建柱状图对象
.add_xaxis(x_data) # 添加横轴数据
.add_yaxis("跨国企业占比", y_data1, stack="stack1") # 添加第一组纵轴数据,并指定堆叠方式为"stack1"
.add_yaxis("本土企业占比", y_data2, stack="stack1") # 添加第二组纵轴数据,并指定堆叠方式为"stack1"
.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 设置数据标签不显示
.set_global_opts(
title_opts=opts.TitleOpts(title="跨国企业与本土企业占比"), # 设置图表标题
xaxis_opts=opts.AxisOpts(name="年份"), # 设置横轴名称
yaxis_opts=opts.AxisOpts(name="占比(%)"), # 设置纵轴名称
legend_opts=opts.LegendOpts(pos_left="right"), # 设置图例位置在右侧
)
.render("03.html") # 将图表渲染为HTML文件,保存为"03.html"
)
- 创建柱状图实例
c
,使用Bar()
创建一个空的柱状图对象。 - 使用
.add_xaxis(x_data)
方法添加横轴数据。 - 使用
.add_yaxis("跨国企业占比", y_data1, stack="stack1")
方法添加第一组纵轴数据,并指定堆叠方式为"stack1"。 - 使用
.add_yaxis("本土企业占比", y_data2, stack="stack1")
方法添加第二组纵轴数据,并指定堆叠方式为"stack1"。 - 使用
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
方法设置数据标签不显示。 - 使用
.set_global_opts(...)
方法设置图表的全局参数,包括标题、轴名称和图例位置等。 - 使用
.render("03.html")
方法将图表渲染为HTML文件,保存为"03.html"。
该代码运行后会生成一个堆叠条形图,用于展示跨国企业和本土企业在不同年份的占比情况。图表的标题是“跨国企业与本土企业占比”,x 轴代表年份,y 轴代表占比。图例位置位于右侧。
以下是完整的代码实现:
from pyecharts import options as opts # 导入 pyecharts 库的 options 模块
from pyecharts.charts import Bar # 导入 pyecharts 库的 Bar 类
x_data = ["2019", "2020", "2021", "2022", "2023"] # 定义年份数据
y_data1 = [20.3, 22.0, 23.5, 22.5, 22.3] # 定义跨国企业占比数据
y_data2 = [79.7, 78.0, 76.5, 77.5, 77.7] # 定义本土企业占比数据
c = (
Bar() # 创建一个 Bar 类实例
.add_xaxis(x_data) # 添加 x 轴数据
.add_yaxis("跨国企业占比", y_data1, stack="stack1") # 添加跨国企业占比数据
.add_yaxis("本土企业占比", y_data2, stack="stack1") # 添加本土企业占比数据
.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 设置系列选项,隐藏标签
.set_global_opts(
title_opts=opts.TitleOpts(title="跨国企业与本土企业占比"), # 设置标题为“跨国企业与本土企业占比”
xaxis_opts=opts.AxisOpts(name="年份"), # 设置 x 轴名称
yaxis_opts=opts.AxisOpts(name="占比(%)"), # 设置 y 轴名称
legend_opts=opts.LegendOpts(pos_left="right"), # 设置图例位置为右侧
)
.render("03.html") # 将图表渲染成 html 文件,保存为“03.html”
)