欢迎来到每日五个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()
代码解析
导入必要的模块:我们导入了
options
、Bar
和Faker
模块。Faker
模块用于生成模拟数据,方便我们快速创建图表。创建柱状图对象:通过
Bar()
创建一个柱状图实例。添加X轴数据:使用
add_xaxis()
方法添加X轴数据,这里使用Faker.choose()
生成一组随机分类数据。添加Y轴数据:使用
add_yaxis()
方法添加Y轴数据,这里我们添加了两组数据(商家A和商家B),每组数据都使用Faker.values()
生成随机数值。- 关键参数
gap="0%"
:设置了同一分类下不同系列柱子之间的距离为0%,使柱子紧密排列在一起,增强数据对比效果。
- 关键参数
设置全局选项:
title_opts
设置图表标题为"Bar-不同系列柱间距离"渲染图表:使用
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()
代码解析
导入必要的模块:我们导入了
options
、Bar
、JsCode
和Faker
模块。JsCode
模块用于在Python代码中嵌入JavaScript代码,实现自定义颜色逻辑。定义颜色函数:使用JavaScript代码定义了一个颜色函数,根据数据值的范围返回不同的颜色:
- 数据值在0到50之间:红色
- 数据值在50到100之间:蓝色
- 其他数据值:绿色
创建柱状图对象:通过
Bar()
创建一个柱状图实例。添加X轴数据:使用
add_xaxis()
方法添加X轴数据,这里使用Faker.choose()
生成一组随机分类数据。添加Y轴数据:使用
add_yaxis()
方法添加三组Y轴数据(商家A、商家B和商家C),每组数据都使用Faker.values()
生成随机数值。- 关键参数
itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function))
:应用自定义颜色函数到每个柱子。
- 关键参数
设置全局选项:
title_opts
设置图表标题为"Bar-自定义柱状颜色"渲染图表:使用
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()
代码解析
导入必要的模块:我们导入了
options
、Bar
和Line
模块。定义数据:
colors
:定义了三种颜色,分别用于降水量、蒸发量和平均温度x_data
:定义了X轴的月份数据evaporation_capacity
:定义了蒸发量数据rainfall_capacity
:定义了降水量数据average_temperature
:定义了平均温度数据
创建柱状图对象:通过
Bar()
创建一个柱状图实例,并设置了图表的宽度和高度。添加X轴和Y轴数据:
- 使用
add_xaxis()
方法添加X轴数据 - 使用
add_yaxis()
方法添加两组Y轴数据(蒸发量和降水量),并指定了对应的Y轴索引
- 使用
扩展Y轴:
- 使用
extend_axis()
方法添加了两个额外的Y轴:右侧的蒸发量轴和左侧的温度轴 - 为每个Y轴设置了名称、范围、位置、颜色和标签格式
- 使用
设置全局选项:
- 设置了主Y轴(降水量)的选项
- 设置了tooltip选项,启用了坐标轴交叉指针
创建折线图对象:通过
Line()
创建一个折线图实例,用于展示平均温度数据叠加图表:使用
overlap()
方法将折线图叠加在柱状图上渲染图表:使用
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()
代码解析
导入必要的模块:我们导入了
options
、Bar
和Faker
模块。创建柱状图对象:通过
Bar()
创建一个柱状图实例。添加X轴数据:使用
add_xaxis()
方法添加X轴数据,这里使用Faker.choose()
生成一组随机分类数据。添加Y轴数据:使用
add_yaxis()
方法添加两组Y轴数据(商家A和商家B),每组数据都使用Faker.values()
生成随机数值。设置全局选项:
title_opts
设置图表标题为"Bar-MarkPoint(指定类型)"设置系列选项:
label_opts=opts.LabelOpts(is_show=False)
:隐藏数据标签,使图表更加简洁markpoint_opts=opts.MarkPointOpts()
:设置标记点选项data
参数中添加了三个标记点:最大值、最小值和平均值
渲染图表:使用
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()
代码解析
导入必要的模块:我们导入了
options
、Bar
和Faker
模块。创建柱状图对象:通过
Bar()
创建一个柱状图实例。添加X轴数据:使用
add_xaxis()
方法添加X轴数据,这里使用Faker.choose()
生成一组随机分类数据。添加Y轴数据:使用
add_yaxis()
方法添加两组Y轴数据(商家A和商家B),每组数据都使用Faker.values()
生成随机数值。设置全局选项:
title_opts
设置图表标题为"Bar-Y 轴 formatter"yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} /月"))
:设置Y轴标签格式,在每个数值后添加"/月"单位
渲染图表:使用
render_notebook()
方法在Jupyter Notebook中渲染图表,也可以使用render()
方法将图表保存为HTML文件。
图表特点与应用场景
- 单位清晰:通过Y轴格式化,明确标注数据的单位,避免歧义
- 双系列对比:同时展示两组数据,便于比较不同商家在各个分类下的表现
- 自定义格式:可以根据需求灵活设置Y轴标签的格式,如添加单位、百分比等
- 适用场景:适合月度销售额、月度产量、月度用户增长等需要明确时间单位的场景
通过Y轴格式化,我们可以使图表更加专业和清晰,帮助读者准确理解数据的含义和单位。
总结与展望
在本文中,我们学习了五种不同风格和功能的柱状图可视化技巧,这些技巧能够显著提升你的数据可视化效果:
- 不同系列柱间距离的柱状图:通过调整
gap
参数,优化同一分类下不同系列柱子之间的距离,让数据对比更加清晰直观。 - 自定义柱状颜色的柱状图:使用JavaScript函数实现根据数据值范围自动分配颜色,让数据分布特征一目了然。
- 多Y轴组合柱状图与折线图:通过多Y轴设计,在同一图表中展示不同类型和量纲的数据,揭示数据间的隐藏关系。
- 带有标记点的柱状图:通过添加最大值、最小值和平均值标记点,快速捕捉数据的关键特征和趋势。
- Y轴格式化的柱状图:通过自定义Y轴标签格式,明确标注数据单位,避免数据解读歧义。
这些技巧从数据对比优化、颜色编码、多数据类型展示,到数据特征强调和单位格式化,全面覆盖了柱状图的高级应用场景。无论是制作数据分析报告、业务展示图表还是学术研究可视化,这些技巧都能让你的图表更加专业、美观且富有洞察力。
希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言讨论。后续我们还将探索更多pyecharts可视化技巧,敬请期待!