2

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

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

4

1 回答 1

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外壳类型中:

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

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

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

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

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

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

于 2013-09-02T09:29:15.217 回答