You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何固定matplotlib正切函数绘图尺寸,避免画面跳动?

解决Matplotlib绘制正切函数时的画面跳动与轴范围固定问题

你的代码出现画面跳动、尺寸无法固定的核心原因是每次循环都清除了整个坐标轴,导致Matplotlib反复重新计算轴范围;同时正切函数的渐近线产生的极端y值也会不断改变显示区间。以下是修复方案:

修复后的代码

import numpy as np
import matplotlib.pyplot as plt

lowerBound = 0

# 初始化画布并固定尺寸
fig, ax = plt.subplots(figsize=(5, 4))
plt.ion()

# 预先设置y轴显示范围,锁定区间
ax.set_ylim(-200, 200)

while True:
    x = np.arange(lowerBound, lowerBound + 50, 0.1)
    y = np.tan(x / 2)
    
    # 截断y值到[-200, 200],避免渐近线的极端值干扰绘图
    y_clipped = np.clip(y, -200, 200)
    
    # 仅清除之前的线条,保留坐标轴设置
    ax.clear_lines()
    ax.plot(x, y_clipped)
    
    plt.pause(0.01)
    lowerBound += 1

关键改进说明

  • 固定画布尺寸:通过plt.subplots(figsize=(5,4))一次性初始化带指定尺寸的画布,后续不会再变动。
  • 锁定y轴范围:ax.set_ylim(-200, 200)强制固定y轴的显示区间,彻底解决因极端值导致的画面跳动。
  • 优化清除操作:用ax.clear_lines()替代plt.cla(),只清除已绘制的线条,保留坐标轴的所有设置,避免每次循环重置布局。
  • 处理y值极值:np.clip(y, -200, 200)直接将超出范围的y值截断到目标区间;若需要获取数组的极值,可使用np.max(y)和np.min(y),但注意正切函数在渐近线处会生成无穷大值(inf),所以截断操作更适合绘图场景。

内容的提问来源于stack exchange,提问作者sbottingota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:00:49