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

如何让Matplotlib实现类似Matlab的多图即时显示效果?

解决Matplotlib绘图需关闭前一窗口才显示后一窗口的问题

问题核心在于plt.show()默认是阻塞模式,执行到这行代码时程序会暂停,直到关闭当前图形窗口才会继续运行后续代码,所以第二个myplot要等第一个窗口关闭才会执行。下面提供两种接近Matlab plot函数体验的实现方式:

方法一:使用非阻塞式plt.show()

修改plt.show()的block参数为False,让窗口显示后不阻塞程序执行,再配合plt.pause()确保窗口能正常渲染:

import matplotlib.pyplot as plt

def myplot(x, y):
    plt.figure()
    plt.plot(x, y)
    plt.show(block=False)
    plt.pause(0.01)  # 给窗口预留渲染时间,避免出现空白窗口

# 调用函数,两个窗口会同时显示
myplot([1, 2, 3], [4, 5, 6])
myplot([1, 2, 3], [4, 5, 6])

# 最后调用一次plt.show()保持所有窗口打开,避免程序结束后窗口自动关闭
plt.show()

方法二:开启Matplotlib交互式模式

Matlab默认是交互式绘图环境,我们可以开启Matplotlib的交互式模式plt.ion(),实现调用绘图函数后即时显示窗口,无需每次调用plt.show():

import matplotlib.pyplot as plt

# 开启交互式模式
plt.ion()

def myplot(x, y):
    plt.figure()
    plt.plot(x, y)
    plt.draw()  # 触发图形绘制,替代每次调用plt.show()

# 调用函数,两个窗口会依次弹出并保持显示
myplot([1, 2, 3], [4, 5, 6])
myplot([1, 2, 3], [4, 5, 6])

# 关闭交互式模式,防止程序结束后窗口立即关闭
plt.ioff()
# 保持所有窗口显示,直到手动关闭
plt.show()

两种方式对比:

  • 方法一适合快速修改现有代码,每次绘图独立控制窗口显示;
  • 方法二更贴近Matlab的使用习惯,开启交互后绘图流程更流畅,适合频繁调用绘图函数的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:50:23