如何在进程结束后保持matplotlib图存活

时间:2016-07-13 09:18:02

标签: python matplotlib plot

同志们,

我有一个函数应该生成一些matplotlib图然后终止。我希望这些图在终止后保留。

  • 如果我设置了交互模式,则图表出现,不会阻止,然后在我的功能终止时消失。我不想要这个。
  • 如果我将交互模式设置为关闭,则会显示该图,然后阻止直到您关闭它,然后该功能终止。我也不想要这个。

所需行为是:图表出现,不会阻止,并在函数终止后保留。

那么人们,有没有办法做到这一点?最可能的方法似乎是多处理。我原以为下面的代码可以工作:

from multiprocessing import Process
import matplotlib.pyplot as plt
import numpy as np

def plot_graph():
    plt.plot(np.random.randn(10))
    plt.show()

p = Process(target=plot_graph)
p.start()

但它没有显示任何内容(至少在MacOS,后端TkAgg上)

我知道我可以将图像保存为图像并打开图像,但这不是我想要的 - 我还想能够使用matplotlib缩放控件等。

1 个答案:

答案 0 :(得分:0)

它应该可以工作,但你的行为好像show()没有阻塞。尝试添加plt.ioff(),如下所示。

from multiprocessing import Process
import matplotlib.pyplot as plt
import numpy as np

def plot_graph():
    plt.plot(np.random.randn(10))
    plt.show()

plt.ioff()
p = Process(target=plot_graph)
p.start()