当前位置: 首页 > ds >正文

每日五个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 设置坐标轴无边界间隙,使折线图从坐标轴原点开始绘制

应用场景:

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

注意事项:

  1. 堆叠折线图适合展示有累积关系的数据,若数据之间没有累积关系,可能会导致误解
  2. 过多的堆叠系列会使图表难以阅读,建议控制在5个以内
  3. 可以通过调整系列的顺序来突出重要的数据系列

图表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中渲染图表

应用场景:

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

注意事项:

  1. 基本折线图适合展示较少的数据系列(通常2-3个),过多会导致图表拥挤
  2. 确保x轴数据和y轴数据长度一致
  3. 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. 指数增长数据,如人口增长、细菌繁殖、投资复利等
  2. 大范围变化的数据,如从1到10000的数值变化
  3. 比率变化数据,如市场份额、增长率等
  4. 科学数据,如pH值、地震震级、声音分贝等对数刻度数据
    在这里插入图片描述

注意事项:

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

图表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_indexyaxis_index 设置多坐标轴索引
  • Grid 组件用于布局多个图表,实现上下排列
  • is_inverse=True 设置y轴反向,使降雨量图表从下往上递增
  • 代码中省略了数据字典的定义,实际使用时需要补充 timeDatawater_flowDatarainfallData 的具体值

应用场景:

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

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

注意事项:

  1. 确保两个图表的x轴数据一致,以便进行有效的对比分析
  2. 合理设置图表的高度和位置,避免图表过于拥挤或比例失调
  3. 对于反向坐标轴(is_inverse=True),需要向观众说明数据的读取方式
  4. 数据缩放功能(datazoom_opts)可以帮助查看数据细节,但需要注意设置合适的初始缩放范围
  5. 实际使用时,需要补充完整的数据定义部分,确保图表能够正常渲染

图表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轴无边界间隙

应用场景:

基础面积图适合展示以下类型的数据:

  1. 单一数据系列的变化趋势,特别是当需要强调数据的范围和 magnitude 时
  2. 随时间变化的累计数据,如网站访问量、销售额等
  3. 需要突出显示峰值和谷值的数据
  4. 比较简单的时间序列数据,不需要展示多个数据系列的关系
    在这里插入图片描述

注意事项:

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

总结:如何选择合适的折线图类型

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

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

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

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

http://www.xdnf.cn/news/17683.html

相关文章:

  • lesson34:深入理解Python线程:从基础到实战优化
  • jupyter notebook如何打开其他盘目录
  • MCP学习与实践
  • [激光原理与应用-222]:机械 - 3D设计与2D设计的异同比较
  • Linux 虚拟机磁盘空间占满-全面清理方案
  • Cesium1.95中如何高效管理 1500 个高频实体
  • 赋值运算符指南
  • 代码可读性与维护性的实践与原则
  • word中,添加新的参考文献后,其他参考文献的交叉引用不能及时更新的解决办法
  • 《Webpack与Vite热模块替换机制深度剖析与策略抉择》
  • 二维前缀和问题
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 MySQL 服务器
  • 电脑本地摄像头做成rtsp流调用测试windows系统中
  • 【大智慧数据】心智开花的时候
  • AI测试助手如何让Bug无处可藏
  • Dify 从入门到精通(第 26/100 篇):Dify 的知识图谱集成
  • 2025最新免费的大模型和免费的大模型API有哪些?(202508更新)
  • 2025年6月电子学会全国青少年软件编程等级考试(Python二级)真题及答案
  • 【Linux指南】Vim的全面解析与深度应用
  • C语言第八章指针四
  • 【接口自动化】初识pytest,一文讲解pytest的安装,识别规则以及配置文件的使用
  • Jotai:React轻量级状态管理新选择
  • Code Exercising Day 10 of “Code Ideas Record“:StackQueue part02
  • SQL三剑客:DELETE、TRUNCATE、DROP全解析
  • CentOS7.9 离线安装mysql数据库
  • CPP继承
  • Windows执行kubectl提示拒绝访问【Windows安装k8s】
  • `sk_buff` 结构体详解(包含全生命周期解析)
  • 数学建模:控制预测类问题
  • 全面了解机器语言之kmeans