Skip to main content
 首页 » 编程设计

python之执行脚本后使用 matplotlib 打开多个图形

2025年05月04日13zdz8207

我有一个关于 matplotlib 中的窗口/图形的问题。我不确定这是否可行,但想知道是否可行。 基本上,当我运行整个脚本时,最后会使用 matplotlib 绘制图表。为了在再次运行脚本后生成新图形,我必须关闭该图形窗口。

有没有办法在不关闭图形的情况下保持打开状态?

举个例子:

我会通过运行我的脚本来绘制图 x。

然后我想将这个图表保留在我的屏幕上,对我的脚本进行更改,再次绘制图表,以便您可以看到旧图表和新图表。因此 n 个图可能是可见的。

请注意,我不想在脚本中绘制新图形。我只是希望能够查看图表、进行更改并查看新图表而无需保存图表。

编辑:

这是我的代码的绘图部分:

def plot_data(atb_mat_2, sd_index, sd_grad):#, rtsd):#, sd_index, sd_grad): 
    fig = plt.figure() 
    fig, (ax0, ax1, ax4, ax2, ax3) = plt.subplots(nrows=5, figsize=(15,10), num='Current Relative Method'+'  ' + path) 
    ax0.plot(atb_mat_2) 
    ax0.set_title('Relative Track',fontsize=11) 
    ax0.set_ylim([-10,10]) 
    if len(sd_index)!=0: 
        if len(sd_index)>1: 
            for i in range(1, len(sd_index)): 
                if sd_grad[i]==1: 
                    ax0.axvspan(sd_index[i-1],sd_index[i], edgecolor='r', lw=None, alpha=0.1) 
    ax1.plot(rtsd) 
    ax1.set_title('RT Standard Deviation',fontsize=11) 
    ax1.set_ylim([0,250]) 
    ax4.plot(abs_track_data) 
    ax4.set_title('Absolute Track',fontsize=11) 
    ax4.set_ylim([3000,5000]) 
    ax2.plot(splitpo) 
    ax2.set_title('Track Split',fontsize=11) 
    ax2.set_ylim([0,20]) 
    ax3.plot(ts) 
    ax3.set_title('TS Standard Deviation',fontsize=11) 
    ax3.set_ylim([0,100]) 
 
    fig.tight_layout() 
    plt.show() 

非常感谢任何建议,如果这个答案很明显,我很抱歉,因为我是新手。

请您参考如下方法:

您可以使用 ipython 来完成。

  1. 编写脚本并将其保存为(例如)test.py。脚本应该创建一个图形,进行绘图并显示情节:

    import numpy as np 
    import matplotlib.pyplot as plt  
     
    fig = plt.figure() 
    x = np.linspace(-1, 1, 100) 
    y = np.sin(x) 
    plt.plot(x, y) 
    plt.show() 
    
  2. 启动 ipython 控制台使用:

    ipython --pylab=qt 
    

    或者您想要使用的任何后端。

  3. 在 ipython shell 中输入:

    %run /path/to/the/test.py 
    

    这将创建一个图形,并显示情节。

  4. 然后更改您的脚本。例如将第 5 行更改为:

    x = np.linspace(-0, 2, 100) 
    
  5. 在 ipython shell 中重复 %run 命令:

    %run /path/to/the/test.py 
    

    另一个图形将弹出新情节。旧图也将可见(这不会删除或替换它)。