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

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

欢迎来到pyecharts折线图系列的第三篇文章!在前两篇中,我们已经掌握了堆叠折线图、基本折线图、对数轴折线图、雨量流量关系图和基础面积图等实用图表类型。折线图作为数据可视化中最常用的图表类型之一,能够清晰地展示数据随时间或其他连续变量的变化趋势,是数据分析和决策中不可或缺的工具。在这里插入图片描述

在本文中,我们将深入探讨五种更高级的折线图类型:平滑折线图、雨量流量关系图、多X轴折线图、堆叠区域图和阶梯图。这些图表类型各有特色,适用于不同的数据分析场景。无论您是数据分析师、研究员还是学生,掌握这些高级折线图技巧都将帮助您创建更加专业、直观的数据可视化效果。让我们开始这段学习之旅吧!pyecahts源码

目录

    • 图表1:平滑折线图——让数据趋势更流畅
      • 代码解释:
      • 应用场景:
      • 注意事项:
    • 图表2:雨量流量关系图——双Y轴数据对比分析
      • 代码解释:
      • 应用场景:
      • 注意事项:
    • 图表3:多X轴折线图——不同时间维度数据对比
      • 代码解释:
      • 应用场景:
      • 注意事项:
    • 图表4:堆叠区域图——数据累积效应可视化
      • 代码解释:
      • 应用场景:
      • 注意事项:
    • 图表5:阶梯图——离散数据变化的完美呈现
      • 代码解释:
      • 应用场景:
      • 注意事项:
    • 总结

图表1:平滑折线图——让数据趋势更流畅

平滑折线图通过曲线拟合数据点,使折线更加平滑流畅,适合展示趋势变化较为平缓的数据。这种图表能够减少数据波动带来的视觉干扰,更清晰地呈现数据的整体趋势。

平滑折线图通过曲线拟合数据点,使折线更加平滑流畅,适合展示趋势变化较为平缓的数据。这种图表能够减少数据波动带来的视觉干扰,更清晰地呈现数据的整体趋势。

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(), is_smooth=True) .add_yaxis("商家B", Faker.values(), is_smooth=True) .set_global_opts(title_opts=opts.TitleOpts(title="Line-smooth")) #.render("line_smooth.html") 
)
c.render_notebook()

代码解释:

  • is_smooth=True 是实现平滑折线的关键参数,它会使折线图的线条变得平滑流畅
  • Faker.choose() 生成随机的类别数据作为x轴
  • Faker.values() 生成随机的数值数据作为y轴
  • 代码中同时添加了两个数据系列(商家A和商家B)进行对比
  • render_notebook() 方法用于在Jupyter Notebook中渲染图表

应用场景:

平滑折线图特别适合以下场景:

  1. 展示长期趋势数据,如股票价格的长期走势、气温的季节变化等
  2. 当数据点较多且波动较大时,平滑折线可以减少视觉干扰
  3. 需要呈现数据整体趋势而非具体数据点时
  4. 制作更具美感的数据可视化报告
    在这里插入图片描述

注意事项:

  1. 平滑折线图会一定程度上改变原始数据的形状,可能会掩盖一些细节波动
  2. 对于需要精确展示每个数据点的场景,不建议使用平滑折线
  3. 可以通过调整is_smooth参数的值来控制平滑程度(True/False)
  4. Faker类用于生成测试数据,实际应用中应替换为真实数据

图表2:雨量流量关系图——双Y轴数据对比分析

雨量流量关系图是一种特殊的折线图,它可以同时展示两个相关指标(流量和降雨量)的变化趋势,并通过双Y轴让两者在同一图表中进行对比分析。这种图表特别适用于水文、气象等领域的数据可视化。

雨量流量关系图是一种特殊的折线图,它可以同时展示两个相关指标(流量和降雨量)的变化趋势,并通过双Y轴让两者在同一图表中进行对比分析。这种图表特别适用于水文、气象等领域的数据可视化。

import pyecharts.options as opts
from pyecharts.charts import Line# 假设这些数据已定义
# x_data = [...]
# y_data_flow_amount = [...]
# y_data_rain_fall_amount = [...]c = (Line().add_xaxis(xaxis_data=x_data).add_yaxis(series_name="流量",y_axis=y_data_flow_amount,areastyle_opts=opts.AreaStyleOpts(opacity=0.5),linestyle_opts=opts.LineStyleOpts(),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="降雨量",y_axis=y_data_rain_fall_amount,yaxis_index=1,areastyle_opts=opts.AreaStyleOpts(opacity=0.5),linestyle_opts=opts.LineStyleOpts(),label_opts=opts.LabelOpts(is_show=False),).extend_axis(yaxis=opts.AxisOpts(name="降雨量(mm)",name_location="start",type_="value",max_=5,is_inverse=True,axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),)).set_global_opts(title_opts=opts.TitleOpts(title="雨量流量关系图",subtitle="数据来自西安兰特水电测控技术有限公司",pos_left="center",pos_top="top",),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),legend_opts=opts.LegendOpts(pos_left="left"),datazoom_opts=[opts.DataZoomOpts(range_start=0, range_end=100),opts.DataZoomOpts(type_="inside", range_start=0, range_end=100),],xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),yaxis_opts=opts.AxisOpts(name="流量(m^3/s)", type_="value", max_=500),).set_series_opts(markarea_opts=opts.MarkAreaOpts(is_silent=False,data=[opts.MarkAreaItem(name="流量",x=("2009/9/12-7:00", "2009/9/22-7:00"),label_opts=opts.LabelOpts(is_show=False),itemstyle_opts=opts.ItemStyleOpts(color="#DCA3A2", opacity=0.5),),opts.MarkAreaItem(name="降雨量",x=("2009/9/10-7:00", "2009/9/20-7:00"),label_opts=opts.LabelOpts(is_show=False),itemstyle_opts=opts.ItemStyleOpts(color="#A1A9AF", opacity=0.5),),],),axisline_opts=opts.AxisLineOpts(),)#.render("rainfall.html").render_notebook()
)

代码解释:

  • extend_axis 方法用于添加额外的Y轴,这里添加了一个用于显示降雨量的Y轴
  • yaxis_index=1 表示该数据系列使用第二个Y轴(降雨量轴)
  • areastyle_opts=opts.AreaStyleOpts(opacity=0.5) 设置了区域填充样式,增加了图表的可视化效果
  • datazoom_opts 添加了数据缩放功能,方便查看不同时间段的数据
  • markarea_opts 用于标记特定区域,可以突出显示重要的数据段
  • is_inverse=True 设置了降雨量Y轴为反向,使其从下往上递增

应用场景:

雨量流量关系图特别适合以下场景:

  1. 水文监测数据可视化,展示降雨量与河流水位/流量的关系
  2. 气象数据分析,研究降水与其他气象指标的关联
  3. 环境科学中,分析降雨对地下水、地表径流的影响
  4. 城市排水系统设计,评估降雨量与排水量的关系
    在这里插入图片描述

注意事项:

  1. 确保两个数据系列(流量和降雨量)的时间范围一致,以便正确对比
  2. 适当调整两个Y轴的刻度范围,避免数据过于拥挤或稀疏
  3. 区域填充的透明度(opacity)不宜过高,以免遮挡其他数据
  4. 标记区域(MarkArea)的颜色应与对应的数据系列颜色协调
  5. 实际应用中需要替换示例代码中的数据占位符为真实数据

图表3:多X轴折线图——不同时间维度数据对比

多X轴折线图是一种高级折线图类型,它允许在同一个图表中展示多个时间维度的数据,特别适合比较不同年份同期数据的变化趋势。这种图表通过扩展X轴的方式,可以在同一可视化空间内容纳更多的时间序列数据。

多X轴折线图是一种高级折线图类型,它允许在同一个图表中展示多个时间维度的数据,特别适合比较不同年份同期数据的变化趋势。这种图表通过扩展X轴的方式,可以在同一可视化空间内容纳更多的时间序列数据。

import pyecharts.options as opts
from pyecharts.charts import Line# 将在 v1.1.0 中更改
from pyecharts.commons.utils import JsCode"""
Gallery 使用 pyecharts 1.0.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=multiple-x-axis` 目前无法实现的功能:1、暂无
"""js_formatter = """function (params) {console.log(params);return '降水量  ' + params.value + (params.seriesData.length ? ':' + params.seriesData[0].data : '');}"""(Line().add_xaxis(xaxis_data=["2016-1","2016-2","2016-3","2016-4","2016-5","2016-6","2016-7","2016-8","2016-9","2016-10","2016-11","2016-12",]).extend_axis(xaxis_data=["2015-1","2015-2","2015-3","2015-4","2015-5","2015-6","2015-7","2015-8","2015-9","2015-10","2015-11","2015-12",],xaxis=opts.AxisOpts(type_="category",axistick_opts=opts.AxisTickOpts(is_align_with_label=True),axisline_opts=opts.AxisLineOpts(is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#6e9ef1")),axispointer_opts=opts.AxisPointerOpts(is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))),),).add_yaxis(series_name="2015 降水量",is_smooth=True,symbol="emptyCircle",is_symbol_show=False,# xaxis_index=1,color="#d14a61",y_axis=[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],label_opts=opts.LabelOpts(is_show=False),linestyle_opts=opts.LineStyleOpts(width=2),).add_yaxis(series_name="2016 降水量",is_smooth=True,symbol="emptyCircle",is_symbol_show=False,color="#6e9ef1",y_axis=[3.9, 5.9, 11.1, 18.7, 48.3, 69.2, 231.6, 46.6, 55.4, 18.4, 10.3, 0.7],label_opts=opts.LabelOpts(is_show=False),linestyle_opts=opts.LineStyleOpts(width=2),).set_global_opts(legend_opts=opts.LegendOpts(),tooltip_opts=opts.TooltipOpts(trigger="none", axis_pointer_type="cross"),xaxis_opts=opts.AxisOpts(type_="category",axistick_opts=opts.AxisTickOpts(is_align_with_label=True),axisline_opts=opts.AxisLineOpts(is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#d14a61")),axispointer_opts=opts.AxisPointerOpts(is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))),),yaxis_opts=opts.AxisOpts(type_="value",splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),),)#.render("multiple_x_axes.html").render_notebook()
)

代码解释:

  • extend_axis 方法用于添加额外的X轴,这里添加了一个用于显示2015年数据的X轴
  • JsCode 用于在Python代码中嵌入JavaScript函数,这里用于自定义tooltip的格式化显示
  • is_smooth=True 设置折线为平滑曲线
  • symbol="emptyCircle" 设置标记点为空圆圈
  • is_symbol_show=False 隐藏标记点
  • axisline_opts 用于设置坐标轴的样式,包括颜色和是否在零点
  • axispointer_opts 用于设置坐标轴指示器的样式和格式化

应用场景:

多X轴折线图特别适合以下场景:

  1. 对比不同年份同期数据的变化趋势,如降水量、气温、销售量等
  2. 分析时间序列数据的季节性变化
  3. 展示多个时间维度的数据,节省可视化空间
  4. 财经数据对比分析,如不同年度的股票价格走势

注意事项:

  1. 确保不同X轴的数据格式一致,便于对比分析
  2. 适当设置坐标轴的颜色和样式,提高图表的可读性
  3. 对于过多的X轴数据,考虑使用数据缩放功能
  4. 注意JavaScript代码的正确嵌入方式,避免语法错误
  5. 测试tooltip的显示效果,确保格式化函数工作正常
    在这里插入图片描述

图表4:堆叠区域图——数据累积效应可视化

堆叠区域图是一种特殊的折线图,它通过在折线下方填充颜色来展示数据的累积效果。这种图表特别适合展示多个数据系列的总量及其构成,能够清晰地反映各部分对整体的贡献。

堆叠区域图是一种特殊的折线图,它通过在折线下方填充颜色来展示数据的累积效果。这种图表特别适合展示多个数据系列的总量及其构成,能够清晰地反映各部分对整体的贡献。

import pyecharts.options as opts
from pyecharts.charts import Line"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=area-stack` 目前无法实现的功能:暂无
"""x_data = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
y_data = [820, 932, 901, 934, 1290, 1330, 1320](Line().add_xaxis(xaxis_data=x_data).add_yaxis(series_name="邮件营销",stack="总量",y_axis=[120, 132, 101, 134, 90, 230, 210],areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="联盟广告",stack="总量",y_axis=[220, 182, 191, 234, 290, 330, 310],areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="视频广告",stack="总量",y_axis=[150, 232, 201, 154, 190, 330, 410],areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="直接访问",stack="总量",y_axis=[320, 332, 301, 334, 390, 330, 320],areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="搜索引擎",stack="总量",y_axis=[820, 932, 901, 934, 1290, 1330, 1320],areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=True, position="top"),).set_global_opts(title_opts=opts.TitleOpts(title="堆叠区域图"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),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),)#.render("stacked_area_chart.html").render_notebook()
)

代码解释:

  • stack="总量" 是实现堆叠效果的关键参数,所有设置了相同stack值的数据系列将被堆叠显示
  • areastyle_opts=opts.AreaStyleOpts(opacity=0.5) 设置了区域填充样式和透明度
  • label_opts=opts.LabelOpts(is_show=False) 隐藏了大部分数据系列的标签,仅在最后一个系列显示
  • xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False) 设置了x轴为类别类型,并关闭了边界间隙
  • tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross") 设置了tooltip以坐标轴触发,并使用十字指针

应用场景:

堆叠区域图特别适合以下场景:

  1. 展示多个数据系列的累积效果,如网站流量的来源构成
  2. 分析各部分数据对整体的贡献,如销售业绩的产品类别占比
  3. 监控时间序列数据的变化趋势及其构成,如用户增长的渠道分析
  4. 比较不同时期的数据构成变化,如季度收入的业务线分布
    在这里插入图片描述

注意事项:

  1. 数据系列不宜过多,否则会导致图表难以阅读
  2. 合理设置区域填充的透明度,避免遮挡下层数据
  3. 确保各数据系列的总和与图表标题一致,避免误导读者
  4. 对于重要的数据点,可以单独设置标签显示
  5. 考虑使用渐变色填充,提高图表的美观度和可读性

图表5:阶梯图——离散数据变化的完美呈现

阶梯图是一种特殊的折线图,它通过水平和垂直的线段连接数据点,形成阶梯状的线条。这种图表特别适合展示离散型数据的变化,或者当数据在某个时间点发生突变时的可视化。

阶梯图是一种特殊的折线图,它通过水平和垂直的线段连接数据点,形成阶梯状的线条。这种图表特别适合展示离散型数据的变化,或者当数据在某个时间点发生突变时的可视化。

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(), is_step=True) .set_global_opts(title_opts=opts.TitleOpts(title="Line-阶梯图")) #.render("line_step.html") 
)
c.render_notebook()

代码解释:

  • is_step=True 是实现阶梯图的关键参数,它会使折线图的线条呈现阶梯状
  • Faker.choose() 生成随机的类别数据作为x轴
  • Faker.values() 生成随机的数值数据作为y轴
  • 代码中只添加了一个数据系列(商家A)
  • render_notebook() 方法用于在Jupyter Notebook中渲染图表

应用场景:

阶梯图特别适合以下场景:

  1. 展示离散数据的变化,如股票价格在交易日结束时的变化
  2. 表示数据在特定时间点的突变,如政策变化前后的指标对比
  3. 模拟开关状态的变化,如设备的开启/关闭状态随时间的变化
  4. 显示按阶段变化的业务指标,如季度销售额的变化
    在这里插入图片描述

注意事项:

  1. 阶梯图更适合展示离散型数据,对于连续型数据可能不太合适
  2. 确保x轴的数据是有序的,以便正确展示阶梯效果
  3. 对于多个数据系列,要注意颜色和样式的区分,避免混淆
  4. Faker类用于生成测试数据,实际应用中应替换为真实数据
  5. 可以通过调整线条样式和标记点来增强图表的可读性

总结

在本文中,我们学习了五种高级折线图类型:

  1. 平滑折线图:通过曲线拟合数据点,减少波动干扰,清晰呈现整体趋势
  2. 雨量流量关系图:使用双Y轴展示两个相关指标的变化趋势,适用于对比分析
  3. 多X轴折线图:在同一图表中展示多个时间维度的数据,便于不同年份同期数据对比
  4. 堆叠区域图:展示多个数据系列的累积效果,清晰反映各部分对整体的贡献
  5. 阶梯图:通过水平和垂直线段连接数据点,完美呈现离散数据的变化

每种折线图都有其独特的应用场景和配置技巧。在实际应用中,您可以根据数据特点和分析需求选择合适的图表类型。希望本文能够帮助您进一步提升数据可视化技能,创建更加专业、直观的数据图表。

如果您想了解更多关于pyecharts的使用技巧,请关注我们的系列文章。感谢您的阅读!

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

相关文章:

  • 常用设计模式系列(十九)- 状态模式
  • 闸机控制系统从设计到实现全解析:第 5 篇:RabbitMQ 消息队列与闸机通信设计
  • HBase BlockCache:LRU Cache
  • Agent用户体验设计:人机交互的最佳实践
  • redis(2)-java客户端使用(IDEA基于springboot)
  • 【图像处理基石】UE输出渲染视频,有哪些画质相关的维度和标准可以参考?
  • FlinkSql(详细讲解二)
  • IDE认知革命:JetBrains AI Assistant插件深度调教手册(终极实战指南)
  • 服务器配置实战:从 “密码锁” 到 “分工协作” 的知识点详解
  • POI导入时相关的EXCEL校验
  • Spring Boot Excel数据导入数据库实现详解
  • 缓存的三大问题分析与解决
  • Flink + Hologres构建实时数仓
  • MSE ZooKeeper:Flink高可用架构的企业级选择
  • 容器之王--Docker的安全优化详解及演练
  • 在Mac 上生成GitLab 的SSH 密钥并将其添加到GitLab
  • Django Request 与 DRF Request 的区别
  • (Arxiv-2025)Phantom:通过跨模态对齐实现主体一致性视频生成
  • 什么情况下会导致日本服务器变慢?解决办法
  • 第2节 大模型分布式推理架构设计原则
  • AIStarter修复macOS 15兼容问题:跨平台AI项目管理新体验
  • MySQL权限管理和MySQL备份
  • 大模型落地实践:从技术重构到行业变革的双重突破
  • C/C++练习面试题
  • Selenium动态元素定位
  • 【运维进阶】WEB 服务器
  • 学习观察和行动:机器人操作中任务-觉察的视图规划
  • docker安装searxng
  • C语言如何安全的进行字符串拷贝
  • 云原生环境 Prometheus 企业级监控实战