2012-04-15 71 views
-1

我有這個程序,它將以這樣的方式求解微分方程組,以便每次for循環迭代時生成兩個值xi,yi。有什麼方法可以在生成這些值時繪製這些值,而不是等待計算完成,然後將它們全部繪製出來?在Python中實時顯示結果

+0

想想你將如何打印出每次迭代計算的值。當程序到達告訴它的線時,程序將打印輸出以控制當前迭代的結果。將這個邏輯應用到你正在顯示的二維圖。你需要做的就是在每次迭代結束時更新圖形。 – Jkh2 2012-04-15 19:22:57

回答

0

您可能想看看matplotlib(http://matplotlib.sourceforge.net/)或gnuplot.py(http://gnuplot-py.sourceforge.net/)。我完成後使用這些來繪製數據,但我沒有看到在生成數據時無法做到這一點的原因。但是,取決於循環執行的速度,這可能會降低整個程序的速度。

gnuplot可能不再維護,但我一直在使用它沒有任何問題。

+0

我之前使用過這些,但正如您所說,只繪製已經計算的值。如果點計算比顯示更新快,它將是理想的,它將只顯示一些計算點 – 2012-04-15 19:27:05

+0

一種方法,你可以編碼你的循環(例如使用mod運算符)來繪製每個第n個數據集。即,而不是繪製每個值,只是在生成數據時對數據的一部分進行採樣。 – Levon 2012-04-15 19:29:33

+0

例如,要繪製循環內部的每個第五個值,請維護一個計數器(例如,count),以便每次在循環中遞增。然後有這樣的事情:如果不計算%5:plot_values(xi,yi) – Levon 2012-04-15 19:41:56

0

比方說,你的算法是這樣的:

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 
+0

這將使劇情後計算。我需要的是在每次計算時繪製一個點。 (如最後一行縮進,但很亂) – 2012-04-15 20:11:35