执行脚本后,使用matplotlib保持打开多个数字

时间:2013-09-02 09:00:33

标签: python graph matplotlib window figure

我对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()

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

1 个答案:

答案 0 :(得分:1)

您可以使用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. %run shell中重复ipython命令:

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

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