【问题标题】:Real-time display of results in Python在 Python 中实时显示结果
【发布时间】:2012-04-15 19:17:11
【问题描述】:

我有这个程序,它将求解一个微分方程组,这样每次 for 循环迭代时都会产生两个值 xi 和 yi。有什么方法可以在生成这些值时绘制它们,而不是等待计算完成,然后将它们全部绘制出来?

【问题讨论】:

  • 想想如何打印出每次迭代计算的值。当程序到达告诉它的行时,程序将打印出来以控制台当前迭代的结果。将此逻辑应用于您正在显示的二维图形。您需要做的就是在每次迭代结束时更新图表。

标签: python plot real-time


【解决方案1】:

您可能想看看 matplotlib (http://matplotlib.sourceforge.net/) 或 gnuplot.py (http://gnuplot-py.sourceforge.net/)。完成后,我使用这些来绘制数据,但我看不出为什么在生成数据时不能这样做。但是,根据循环执行的速度,这可能会减慢整个程序的速度。

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

【讨论】:

  • 我以前用过那些,但正如你所说,只是为了绘制已经计算的值。理想的情况是,如果点计算速度比显示更新快,它只会显示一些计算点
  • 一种方法,您可以对循环进行编码(使用例如 mod 运算符)仅绘制每个第 n 个数据集。即,不是绘制每个值,而是在生成数据时对数据的子集进行采样。
  • 例如,要在循环中绘制每五个值,请维护一个计数器(例如,计数),每次通过循环时递增。然后有类似的东西: if not count%5: plot_values(xi, yi)
  • 问题在于,它会在我的屏幕上填满很多绘图窗口(对于我知道的应用程序)
【解决方案2】:

假设您的算法如下所示:

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

【讨论】:

  • 这将使计算后的情节。我需要的是在每次计算时绘制一个点。 (就像最后一行缩进一样,但这很乱)
猜你喜欢
  • 2012-01-09
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2021-08-07
  • 2020-12-22
  • 2017-03-02
相关资源
最近更新 更多