云计算百科
云计算领域专业知识百科平台

每日五个pyecharts可视化图表-line:从入门到精通 (2)

在当今数据驱动的时代,折线图因其简洁直观的特性,成为展示时间序列数据、揭示趋势变化的黄金工具。无论是金融分析中的股票走势、科学研究中的实验数据,还是业务决策中的销售趋势,折线图都能帮助我们快速把握数据背后的规律。 在这里插入图片描述

本系列文章将带您从基础到高级,全面掌握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 设置坐标轴无边界间隙,使折线图从坐标轴原点开始绘制

应用场景:

堆叠折线图特别适合展示多个相关数据系列的累积趋势,如不同渠道的流量来源、不同产品的销售构成、不同部门的费用支出等。通过堆叠显示,可以直观地看出总量的变化趋势以及各个组成部分的贡献。 在这里插入图片描述

注意事项:

  • 堆叠折线图适合展示有累积关系的数据,若数据之间没有累积关系,可能会导致误解
  • 过多的堆叠系列会使图表难以阅读,建议控制在5个以内
  • 可以通过调整系列的顺序来突出重要的数据系列
  • 图表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中渲染图表

    应用场景:

    基本折线图适合展示简单的趋势变化,如股票价格走势、气温变化、销售业绩趋势等。当你需要快速查看数据随时间或其他连续变量的变化情况时,基本折线图是最直接的选择。 在这里插入图片描述

    注意事项:

  • 基本折线图适合展示较少的数据系列(通常2-3个),过多会导致图表拥挤
  • 确保x轴数据和y轴数据长度一致
  • Faker类用于生成测试数据,实际应用中应替换为真实数据
  • 图表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) 显示分割线,帮助读取数据

    应用场景:

    对数轴折线图特别适合展示以下类型的数据:

  • 指数增长数据,如人口增长、细菌繁殖、投资复利等
  • 大范围变化的数据,如从1到10000的数值变化
  • 比率变化数据,如市场份额、增长率等
  • 科学数据,如pH值、地震震级、声音分贝等对数刻度数据 在这里插入图片描述
  • 注意事项:

  • 对数轴不能显示零或负数,因为对数函数在这些值上无定义
  • 确保数据中没有零或负数,否则图表会显示异常
  • 对数轴可能会掩盖数据的实际差异,需要向观众解释对数刻度的特点
  • 对于不熟悉对数刻度的观众,建议同时提供原始数据或线性刻度的图表作为参考
  • 图表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 的具体值

    应用场景:

    这种上下布局的折线图特别适合展示以下场景:

  • 相关数据的对比分析,如雨量与流量、气温与能耗、股票价格与交易量等
  • 因果关系的研究,如降雨量对河流水位的影响、促销活动对销售额的影响等
  • 多指标监控,如同时监控系统性能的多个指标变化趋势
  • 环境监测数据可视化,如气温、湿度、气压等多种气象数据的同时展示 在这里插入图片描述
  • 注意事项:

  • 确保两个图表的x轴数据一致,以便进行有效的对比分析
  • 合理设置图表的高度和位置,避免图表过于拥挤或比例失调
  • 对于反向坐标轴(is_inverse=True),需要向观众说明数据的读取方式
  • 数据缩放功能(datazoom_opts)可以帮助查看数据细节,但需要注意设置合适的初始缩放范围
  • 实际使用时,需要补充完整的数据定义部分,确保图表能够正常渲染
  • 图表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 时
  • 随时间变化的累计数据,如网站访问量、销售额等
  • 需要突出显示峰值和谷值的数据
  • 比较简单的时间序列数据,不需要展示多个数据系列的关系 在这里插入图片描述
  • 注意事项:

  • 基础面积图通常只适合展示单个数据系列,多个数据系列可能会导致图表难以阅读
  • 可以通过调整透明度(opacity)来改善图表的可读性,特别是当有背景网格线时
  • 选择合适的填充颜色,避免过于鲜艳或刺眼的颜色
  • 当数据点较少时,区域填充可能会使图表看起来不够平滑
  • 如果需要显示数据标签,可以设置 label_opts=opts.LabelOpts(is_show=True)
  • 总结:如何选择合适的折线图类型

    通过本文的学习,我们掌握了五种不同风格的折线图:

    • 堆叠折线图:适合展示多个数据系列的累积效应和总量变化
    • 基本折线图:最常用的趋势展示工具,适合简单的时间序列数据
    • 对数轴折线图:处理指数增长或大范围变化的数据
    • 雨量流量关系图:通过多图表布局展示相关数据的关联关系
    • 基础面积图:强调单一数据系列的范围和 magnitude

    在实际应用中,应根据数据特点和分析目标选择合适的折线图类型。例如,展示销售构成时选择堆叠折线图,分析股票长期走势时使用对数轴折线图,研究相关因素关系时采用雨量流量关系图布局。

    希望本文能帮助您更好地利用pyecharts创建专业、美观的数据可视化图表。在后续系列中,我们将继续探索更多高级图表类型和技巧,敬请期待!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 每日五个pyecharts可视化图表-line:从入门到精通 (2)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!