0

0

Matplotlib 绘图中因坐标轴范围过大导致曲线显示为扁平线的问题解析

霞舞

霞舞

发布时间:2026-01-10 13:55:02

|

519人浏览过

|

来源于php中文网

原创

Matplotlib 绘图中因坐标轴范围过大导致曲线显示为扁平线的问题解析

matplotlib 在绘制多条数据时,若某条数据存在极端异常值,会自动扩展 y 轴范围,致使其他正常数据的波动在视觉上被压缩成一条“扁平线”,实则并非数据错误,而是坐标尺度失衡所致。

该问题本质是 Matplotlib 自动设置 y 轴范围(ylim)时,被某列数据中的极大/极小异常值主导,从而掩盖了其余数据的真实形态。在您的代码中:

ax1.plot(FTBS_nonlin_out[0.0])  # 初始状态:幅度约 [-5, 5]
ax1.plot(FTBS_nonlin_out[4])    # t=4 时刻:含数值爆炸(如 -2e18)

FTBS_nonlin_out[4] 列因 FTBS 格式在非线性对流方程中缺乏耗散或稳定性控制(尤其当 c * dt / dx > 1 时),极易产生数值震荡与溢出,导致个别元素达到 ~ -1e18 量级。而 ax1.plot() 默认将所有传入数据的最大最小值作为绘图边界,因此 y 轴被拉伸至 [-2e18, 5] —— 此时幅度仅 ±5 的初始状态 FTBS_nonlin_out[0.0] 在像素级图像中几乎无法分辨,呈现为视觉上的“水平直线”。

验证方法:添加以下调试语句即可确认:

print("t=0.0 range:", FTBS_nonlin_out[0.0].min(), FTBS_nonlin_out[0.0].max())
print("t=4 range:  ", FTBS_nonlin_out[4].min(), FTBS_nonlin_out[4].max())

解决方案(推荐组合使用):

  • 显式限制 y 轴范围(快速诊断 & 可视化修复):

    ax1.set_ylim(-30, 30)  # 或 plt.ylim(-30, 30)
  • 过滤异常值再绘图(保障展示合理性):

    # 仅绘制有限数值(排除 inf / nan / 极端离群点)
    valid_0 = FTBS_nonlin_out[0.0].replace([np.inf, -np.inf], np.nan).dropna()
    valid_t4 = FTBS_nonlin_out[4].replace([np.inf, -np.inf], np.nan).dropna()
    ax1.plot(valid_0.index, valid_0, label='t=0.0')
    ax1.plot(valid_t4.index, valid_t4, label='t=4')
  • 根本性改进数值稳定性

    • 检查 CFL 条件:确保 c * dt / dx ≤ 1(当前 c=1, dt=0.5, dx=1.0 → CFL=0.5,合规,但非线性项可能引发隐式超限);
    • 改用更稳定格式(如 Lax-Wendroff、ENO/WENO)或添加人工粘性;
    • 对更新公式做截断保护(防御性编程):
      u_new = row[t] - row[t] * (dt/dx) * (row[t] - signal.loc[i-1,t])
      signal.loc[i, t1] = np.clip(u_new, -1e3, 1e3)  # 防止爆炸

? 总结:这不是 Matplotlib 的 bug,而是数值模拟中“结果失稳 → 数据污染绘图范围 → 可视化失效”的典型链式现象。务必养成先检查数据分布、再绘图的习惯;在科研可视化中,plt.ylim() 不是妥协,而是必要控制手段;而长期来看,算法稳定性永远比绘图技巧更重要。

相关标签:

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

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

396

2023.08.14

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

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

26

2026.01.09

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

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

24

2026.01.09

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

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

72

2026.01.09

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

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

9

2026.01.09

python学习网站
python学习网站

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

10

2026.01.09

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

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

52

2026.01.09

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

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

184

2026.01.09

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

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

15

2026.01.09

热门下载

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

精品课程

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

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