代码之家  ›  专栏  ›  技术社区  ›  Ashleigh Clayton

脚本执行后,使用matplotlib保持多个图形打开

  •  2
  • Ashleigh Clayton  · 技术社区  · 11 年前

    我有一个关于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 回复  |  直到 11 年前
        1
  •  1
  •   Viktor Kerkez    11 年前

    你可以使用 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. 重复 %run 中的命令 ipython公司 外壳:

      %运行/path/to/the/test.py
      

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