在matplotlib中显示一些数字而不停止计算

时间:2016-08-17 23:17:39

标签: python c++ matplotlib

您好我想在不停止计算的情况下在matplotlib中显示一些数字。我希望这个数字在计算之后立即出现,例如:

import numpy as np
import pylab as py

x=np.linspace(0,50,51)
y=x
fig, axs = plt.subplots(1, 1)
cs = axs.plot(x, y)

现在我想显示情节而不阻止进行其他计算的可能性

plt.show(block=False)
plt.pause(5)

我创建第二个情节

y1=2*x
fig1, axs1 = plt.subplots(1, 1)
cs1 = axs1.plot(x, y1)

plt.show()

然而,第一次冻结(在我添加的5秒后暂停),直到我最后调用plt.show()。至关重要的是,第一个数字显示并起作用,然后在计算后再添加一个数字。

1 个答案:

答案 0 :(得分:0)

以下代码应该做你想要的。我是在IPython Notebook中做到的。

from IPython import display
import matplotlib.pyplot as plt

def stream_plot(iterable, plotlife=10.):

        for I in iterable:
            display.clear_output(wait=True)
            output = do_calculations_on_i(I)
            plt.plot(output)
            display.display(plt.gca());
            time.sleep(plotlife); #how long to show the plot for

wait = True将等待清除旧图,直到它有新的绘图或打印任何其他输出。

我把睡眠放在那里,所以我可以在擦除之前观察每个情节。这对于必须观察几个实体的分布非常有用。你想要做什么可能需要也可能不需要它。