用Python实时显示结果 我有这个程序,它将解决一个微分方程组,这样每次循环迭代时都产生两个值席,有没有什么方法可以在生成这些值时绘制它们,而不是等待计算完成,然后将它们全部绘制出来?

用Python实时显示结果 我有这个程序,它将解决一个微分方程组,这样每次循环迭代时都产生两个值席,有没有什么方法可以在生成这些值时绘制它们,而不是等待计算完成,然后将它们全部绘制出来?,python,plot,real-time,Python,Plot,Real Time,您可能想看看matplotlib()或gnuplot.py()。在我完成之后,我使用这些来绘制数据,但是我不明白为什么在生成数据时不能这样做。然而,这取决于循环执行的速度,可能会减慢整个程序的速度 gnuplot可能不再维护,但我一直在使用它,没有任何问题。假设您的算法如下所示: import matplotlib x_list = [] y_list = [] while True: xi, yi = compute() # calculates your xi and yi val

您可能想看看matplotlib()或gnuplot.py()。在我完成之后,我使用这些来绘制数据,但是我不明白为什么在生成数据时不能这样做。然而,这取决于循环执行的速度,可能会减慢整个程序的速度


gnuplot可能不再维护,但我一直在使用它,没有任何问题。

假设您的算法如下所示:

import matplotlib

x_list = []
y_list = []
while True:
    xi, yi = compute() # calculates your xi and yi value
    if converged(xi, yi):
        break
    # capture history of your xi and yi
    x_list.append(xi)
    y_list.append(yi)

matplotlib.pyplot.plot(x, y) # create a graph representing x and y

考虑如何打印每次迭代计算的值。当程序到达命令行时,程序将打印出来以控制当前迭代的结果。将此逻辑应用于正在显示的二维图形。您所需要做的就是在每次迭代结束时更新图形。我以前使用过这些,但正如您所说,只是绘制已经计算的值。理想情况是,如果点计算速度快于显示更新速度,则仅显示部分计算点。在一种方法中,您可以对循环进行编码(例如,使用mod运算符)以仅绘制每N个数据集。也就是说,不要绘制每个值,只需在生成数据时对数据的子集进行采样。例如,要绘制循环中的每五个值,请在循环中保持每次递增的计数器(例如计数)。然后有这样的情况:如果不计算%5:plot_值(xi,yi)问题是,它将在我的屏幕上填充许多绘图窗口(对于我所知道的应用程序),这些窗口将在计算后生成绘图。我需要的是每次计算时画一个点。(就像最后一行缩进一样,但这很混乱)