0

0

Matplotlib 渲染同一数据时出现扁平线或正常曲线的原因分析

心靈之曲

心靈之曲

发布时间:2026-01-09 23:52:04

|

527人浏览过

|

来源于php中文网

原创

Matplotlib 渲染同一数据时出现扁平线或正常曲线的原因分析

同一组数据在 matplotlib 中绘制时,有时显示为几乎不可见的扁平线,实则是因坐标轴范围过大导致细节被压缩;调整 y 轴范围或使用 `plt.tight_layout()`、`ax.set_ylim()` 即可恢复真实形态。

该问题本质并非数据异常或绘图逻辑错误,而是 Matplotlib 自动缩放(autoscaling)机制在多条曲线量级差异极大时失效 所致。观察原始代码中两个子图:

  • plot1 同时绘制 FTBS_nonlin_out[0.0](初始状态,幅值约 ±5)与 FTBS_nonlin_out[4](经数值迭代后,在某些位置产生剧烈震荡或数值溢出),后者可能因 FTBS 格式在非线性情形下缺乏稳定性,导致局部值爆炸(如答案指出:y 轴达 −2×10¹⁸ 量级);
  • plot2 绘制的是 FTBS_nonlin_out[0.0] 与 FTBS_nonlin_out[2],后者尚未严重发散,整体动态范围较小(≈ −25 到 5),因此初始正弦波形清晰可见。

此时,Matplotlib 为容纳所有数据点,将 y 轴设为覆盖最大/最小值的全局范围。当某条曲线存在极端离群值(如数值不稳定性引发的 inf、极大负数),其余曲线在其映射下便退化为视觉上的一条“水平线”。

验证与修复方法如下:

  1. 检查数据实际范围(推荐前置调试):

    print("FTBS_nonlin_out[0.0]:", FTBS_nonlin_out[0.0].min(), FTBS_nonlin_out[0.0].max())
    print("FTBS_nonlin_out[4]:",   FTBS_nonlin_out[4].min(),   FTBS_nonlin_out[4].max())
  2. 强制设定合理 y 轴范围(最直接有效):

    Runwayml(AI painting)
    Runwayml(AI painting)

    Runway 平台的文本生成图像AI工具

    下载
    ax1.plot(FTBS_nonlin_out[0.0], label='t=0.0')
    ax1.plot(FTBS_nonlin_out[4],   label='t=4.0')
    ax1.set_ylim(-30, 10)  # 根据物理意义或初值范围设定
    ax1.legend()
  3. 过滤异常值,避免污染坐标轴(适用于含 NaN/inf 的场景):

    # 安全绘图:仅绘制有限值
    valid_0 = FTBS_nonlin_out[0.0].replace([np.inf, -np.inf], np.nan).dropna()
    valid_4 = FTBS_nonlin_out[4].replace([np.inf, -np.inf], np.nan).dropna()
    ax1.plot(valid_0.index, valid_0.values, label='t=0.0')
    ax1.plot(valid_4.index, valid_4.values, label='t=4.0')

⚠️ 注意事项

  • 此现象常掩盖更深层的数值不稳定性问题。本例中 FTBS_nonlin 函数实现的是显式迎风格式(FTBS),但其应用于非线性对流项 $ u \frac{\partial u}{\partial x} $ 时,需满足 CFL 条件 $ c \frac{dt}{dx} \leq 1 $。当前 c=1, dt=0.5, dx=1.0(因 L=J=100 → dx=1),CFL 数为 0.5,理论上稳定;但若迭代中 u 增大(如局部陡增),实际局部 CFL 可能远超 1,引发振荡与溢出。建议监控 signal[t] 每步的最大绝对值,或改用 TVD 格式、添加人工粘性。
  • 不要依赖 plt.show() 默认缩放——尤其在科研绘图中,显式控制坐标轴是良好实践

总结:看似“绘图 bug”,实为数值行为 + 可视化策略的双重体现。养成「先查数据、再设范围、后分析机理」的习惯,可快速定位并解决此类“扁平线”陷阱。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

3

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

11

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

1

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

4

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

9

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

14

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

2

2026.01.09

php网站搭建教程大全
php网站搭建教程大全

本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!

6

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号