在当今数据驱动的时代,折线图因其简洁直观的特性,成为展示时间序列数据、揭示趋势变化的黄金工具。无论是金融分析中的股票走势、科学研究中的实验数据,还是业务决策中的销售趋势,折线图都能帮助我们快速把握数据背后的规律。
本系列文章将带您从基础到高级,全面掌握pyecharts折线图的使用技巧。本文是系列的第二篇,将深入介绍五种实用折线图类型:堆叠折线图(展示累积效应)、基本折线图(经典趋势展示)、对数轴折线图(处理指数增长数据)、雨量流量关系图(多图表关联分析)和基础面积图(强调数据范围)。每种图表都配有完整代码和详细讲解,帮助您轻松应对不同的数据可视化场景。pyecahts源码
目录
-
- 图表1:堆叠折线图——展示数据的累积效应
-
- 代码解释:
- 应用场景:
- 注意事项:
- 图表2:基本折线图——经典趋势展示
-
- 代码解释:
- 应用场景:
- 注意事项:
- 图表3:对数轴折线图——处理指数增长数据
-
- 代码解释:
- 应用场景:
- 注意事项:
- 图表4:雨量流量关系图——多图表关联分析
-
- 代码解释:
- 应用场景:
- 注意事项:
- 图表5:基础面积图——强调数据的范围与 magnitude
-
- 代码解释:
- 应用场景:
- 注意事项:
- 总结:如何选择合适的折线图类型
图表1:堆叠折线图——展示数据的累积效应
堆叠折线图是一种特殊的折线图,它将多个数据系列垂直堆叠,不仅能显示每个系列的变化趋势,还能直观展示总量的变化。这种图表特别适合分析"部分与整体"的关系,比如不同渠道的流量占比、不同产品的销售构成等。
import pyecharts.options as opts
from pyecharts.charts import Line
# 定义x轴数据
x_data = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
# 创建折线图对象
line_chart = Line()
# 添加x轴数据
line_chart.add_xaxis(xaxis_data=x_data)
# 添加邮件营销折线
line_chart.add_yaxis(
series_name="邮件营销",
stack="总量", # 设置堆叠名称,相同名称的系列会堆叠显示
y_axis=[120, 132, 101, 134, 90, 230, 210],
label_opts=opts.LabelOpts(is_show=False), # 不显示数据标签
)
# 添加联盟广告折线
line_chart.add_yaxis(
series_name="联盟广告",
stack="总量",
y_axis=[220, 182, 191, 234, 290, 330, 310],
label_opts=opts.LabelOpts(is_show=False),
)
# 添加视频广告折线
line_chart.add_yaxis(
series_name="视频广告",
stack="总量",
y_axis=[150, 232, 201, 154, 190, 330, 410],
label_opts=opts.LabelOpts(is_show=False),
)
# 添加直接访问折线
line_chart.add_yaxis(
series_name="直接访问",
stack="总量",
y_axis=[320, 332, 301, 334, 390, 330, 320],
label_opts=opts.LabelOpts(is_show=False),
)
# 添加搜索引擎折线
line_chart.add_yaxis(
series_name="搜索引擎",
stack="总量",
y_axis=[820, 932, 901, 934, 1290, 1330, 1320],
label_opts=opts.LabelOpts(is_show=False),
)
# 设置全局配置
line_chart.set_global_opts(
title_opts=opts.TitleOpts(title="折线图堆叠"),
tooltip_opts=opts.TooltipOpts(trigger="axis"), # 触发类型为坐标轴
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=True), # 显示y轴刻度
splitline_opts=opts.SplitLineOpts(is_show=True), # 显示分割线
),
xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), # 无边界间隙
)
# 在notebook中渲染
line_chart.render_notebook()
代码解释:
- x_data 定义了x轴的星期数据
- stack="总量" 设置堆叠名称,相同名称的系列会堆叠显示
- label_opts=opts.LabelOpts(is_show=False) 不显示数据标签,避免图表过于拥挤
- trigger="axis" 设置提示框触发类型为坐标轴,当鼠标悬停在坐标轴上时显示提示信息
- boundary_gap=False 设置坐标轴无边界间隙,使折线图从坐标轴原点开始绘制
应用场景:
堆叠折线图特别适合展示多个相关数据系列的累积趋势,如不同渠道的流量来源、不同产品的销售构成、不同部门的费用支出等。通过堆叠显示,可以直观地看出总量的变化趋势以及各个组成部分的贡献。
注意事项:
图表2:基本折线图——经典趋势展示
基本折线图是数据可视化中最基础、最常用的图表类型。它通过连接数据点形成线条,清晰展示数据随时间或其他连续变量的变化趋势。无论是股票价格、气温变化还是销售业绩,基本折线图都能帮助我们快速捕捉数据的起伏规律。
import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker
c = (
Line()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
#.render("line_base.html")
)
c.render_notebook()
代码解释:
- Faker.choose() 生成随机的类别数据作为x轴
- Faker.values() 生成随机的数值数据作为y轴
- add_yaxis 方法添加两个数据系列:商家A和商家B
- set_global_opts 设置图表标题
- render_notebook() 在notebook中渲染图表
应用场景:
基本折线图适合展示简单的趋势变化,如股票价格走势、气温变化、销售业绩趋势等。当你需要快速查看数据随时间或其他连续变量的变化情况时,基本折线图是最直接的选择。
注意事项:
图表3:对数轴折线图——处理指数增长数据
当数据呈现指数增长或跨越多个数量级时,普通的线性坐标轴会导致图表难以阅读。对数轴折线图通过对数变换,将指数增长转换为线性增长,使数据变化趋势更加清晰。这种图表在金融、生物、物理等领域有着广泛应用。
import pyecharts.options as opts
from pyecharts.charts import Line
c = (
Line()
.add_xaxis(xaxis_data=["一", "二", "三", "四", "五", "六", "七", "八", "九"])
.add_yaxis(
"2 的指数",
y_axis=[1, 2, 4, 8, 16, 32, 64, 128, 256],
linestyle_opts=opts.LineStyleOpts(width=2),
)
.add_yaxis(
"3 的指数",
y_axis=[1, 3, 9, 27, 81, 247, 741, 2223, 6669],
linestyle_opts=opts.LineStyleOpts(width=2),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="Line-对数轴示例"),
xaxis_opts=opts.AxisOpts(name="x"),
yaxis_opts=opts.AxisOpts(
type_="log",
name="y",
splitline_opts=opts.SplitLineOpts(is_show=True),
is_scale=True,
),
)
#.render("line_yaxis_log.html")
)
c.render_notebook()
代码解释:
- type_="log" 设置y轴为对数轴,适合展示指数增长数据
- is_scale=True 开启坐标轴缩放功能,使数据显示更加合理
- linestyle_opts=opts.LineStyleOpts(width=2) 设置线条宽度为2,增强可读性
- splitline_opts=opts.SplitLineOpts(is_show=True) 显示分割线,帮助读取数据
应用场景:
对数轴折线图特别适合展示以下类型的数据:

注意事项:
图表4:雨量流量关系图——多图表关联分析
在实际数据分析中,我们 often需要同时展示多个相关数据系列。雨量流量关系图通过Grid布局将两个折线图上下排列,共享同一时间轴,使我们能够直观观察降雨量与河流水位之间的关系。这种布局方式特别适合展示因果关系或相关分析。
import pyecharts.options as opts
from pyecharts.charts import Line, Grid
# 注意:以下数据为示例,实际使用时请替换为真实数据
# timeData = […] # 时间数据
# water_flowData = […] # 流量数据
# rainfallData = […] # 降雨量数据
l1 = (
Line()
.add_xaxis(xaxis_data=timeData)
.add_yaxis(
series_name="流量",
y_axis=water_flowData,
symbol_size=8,
is_hover_animation=False,
label_opts=opts.LabelOpts(is_show=False),
linestyle_opts=opts.LineStyleOpts(width=1.5),
is_smooth=True,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="雨量流量关系图", subtitle="数据来自西安兰特水电测控技术有限公司", pos_left="center"
),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
axispointer_opts=opts.AxisPointerOpts(
is_show=True, link=[{"xAxisIndex": "all"}]
),
datazoom_opts=[
opts.DataZoomOpts(
is_show=True,
is_realtime=True,
start_value=30,
end_value=70,
xaxis_index=[0, 1],
)
],
xaxis_opts=opts.AxisOpts(
type_="category",
boundary_gap=False,
axisline_opts=opts.AxisLineOpts(is_on_zero=True),
),
yaxis_opts=opts.AxisOpts(max_=500, name="流量(m^3/s)"),
legend_opts=opts.LegendOpts(pos_left="left"),
toolbox_opts=opts.ToolboxOpts(
is_show=True,
feature={
"dataZoom": {"yAxisIndex": "none"},
"restore": {},
"saveAsImage": {},
},
),
)
)
l2 = (
Line()
.add_xaxis(xaxis_data=timeData)
.add_yaxis(
series_name="降雨量",
y_axis=rainfallData,
xaxis_index=1,
yaxis_index=1,
symbol_size=8,
is_hover_animation=False,
label_opts=opts.LabelOpts(is_show=False),
linestyle_opts=opts.LineStyleOpts(width=1.5),
is_smooth=True,
)
.set_global_opts(
axispointer_opts=opts.AxisPointerOpts(
is_show=True, link=[{"xAxisIndex": "all"}]
),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
xaxis_opts=opts.AxisOpts(
grid_index=1,
type_="category",
boundary_gap=False,
axisline_opts=opts.AxisLineOpts(is_on_zero=True),
position="top",
),
datazoom_opts=[
opts.DataZoomOpts(
is_realtime=True,
type_="inside",
start_value=30,
end_value=70,
xaxis_index=[0, 1],
)
],
yaxis_opts=opts.AxisOpts(is_inverse=True, name="降雨量(mm)"),
legend_opts=opts.LegendOpts(pos_left="7%"),
)
)
(
Grid(init_opts=opts.InitOpts(width="1024px", height="768px"))
.add(chart=l1, grid_opts=opts.GridOpts(pos_left=50, pos_right=50, height="35%"))
.add(
chart=l2,
grid_opts=opts.GridOpts(pos_left=50, pos_right=50, pos_top="55%", height="35%"),
)
#.render("rainfall_and_water_flow.html")
.render_notebook()
)
代码解释:
- from pyecharts.charts import Line, Grid 导入需要的图表组件
- is_smooth=True 设置线条平滑显示
- datazoom_opts 添加数据缩放功能,支持实时缩放
- xaxis_index 和 yaxis_index 设置多坐标轴索引
- Grid 组件用于布局多个图表,实现上下排列
- is_inverse=True 设置y轴反向,使降雨量图表从下往上递增
- 代码中省略了数据字典的定义,实际使用时需要补充 timeData、water_flowData 和 rainfallData 的具体值
应用场景:
这种上下布局的折线图特别适合展示以下场景:

注意事项:
图表5:基础面积图——强调数据的范围与 magnitude
基础面积图在折线图的基础上,为线条下方添加了颜色填充,形成一个封闭的区域。这种设计不仅保留了折线图展示趋势的功能,还通过颜色块的大小直观展示数据的范围和 magnitude,特别适合强调单一数据系列的变化。
import pyecharts.options as opts
from pyecharts.charts import Line
"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=area-basic`
目前无法实现的功能:
暂无
"""
x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
y_data = [820, 932, 901, 934, 1290, 1330, 1320]
(
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="",
y_axis=y_data,
symbol="emptyCircle",
is_symbol_show=True,
label_opts=opts.LabelOpts(is_show=False),
areastyle_opts=opts.AreaStyleOpts(opacity=1, color="#C67570"),
)
.set_global_opts(
tooltip_opts=opts.TooltipOpts(is_show=False),
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
)
# 设置 boundary_gap 的时候一定要放在最后一个配置项里, 不然会被覆盖
#.render("basic_area_chart.html")
.render_notebook()
)
代码解释:
- symbol="emptyCircle" 设置标记点为空心圆
- is_symbol_show=True 显示标记点
- areastyle_opts=opts.AreaStyleOpts(opacity=1, color="#C67570") 设置区域填充样式,透明度为1,颜色为#C67570
- tooltip_opts=opts.TooltipOpts(is_show=False) 不显示提示框
- boundary_gap=False 设置x轴无边界间隙
应用场景:
基础面积图适合展示以下类型的数据:

注意事项:
总结:如何选择合适的折线图类型
通过本文的学习,我们掌握了五种不同风格的折线图:
- 堆叠折线图:适合展示多个数据系列的累积效应和总量变化
- 基本折线图:最常用的趋势展示工具,适合简单的时间序列数据
- 对数轴折线图:处理指数增长或大范围变化的数据
- 雨量流量关系图:通过多图表布局展示相关数据的关联关系
- 基础面积图:强调单一数据系列的范围和 magnitude
在实际应用中,应根据数据特点和分析目标选择合适的折线图类型。例如,展示销售构成时选择堆叠折线图,分析股票长期走势时使用对数轴折线图,研究相关因素关系时采用雨量流量关系图布局。
希望本文能帮助您更好地利用pyecharts创建专业、美观的数据可视化图表。在后续系列中,我们将继续探索更多高级图表类型和技巧,敬请期待!
评论前必须登录!
注册