2012-02-17 109 views
8

是否可以在Gnuplot中創建動態繪圖?我所需要的是,由於數據是通過某個循環生成的,因此我將使用gnuplot在x-y軸上放置一些標記,以保留較舊的標記。所以不知何故,我將能夠觀察數據的演變,而不是僅僅看到最終的批處理結果。Gnuplot中的動態繪圖(在MATLAB中繪製)

我特別想要的是相當於MATLAB中的「drawnow」命令。

雖然不完全相關,但現在我正在使用通用lisp來生成循環和cgn中的數據,以便在使用gnuplot的lisp中進行繪圖。 (我可以在使用gnuplot的cgn中使用cgn在一般的lisp中以批處理形式繪製數據)

非常感謝您的關注。

編輯:我爲此寫了一個普通的lisp代碼。你可以在這裏檢查它:
Plotting data sequentially from emacs using Common Lisp and Gnuplot
這個線程是更一般的,並要求在gnuplot動態繪圖。歡迎任何建議。

+0

我一直使用文件IO從lisp到MATLAB進行通信。我從來沒有直接從lisp中獲得出色的可視化功能。我會很樂意看到有人在這裏提出一些更好的解決方案 – 2012-02-18 00:23:58

+0

@claytonstanley,請你檢查一下上面的鏈接。我也想看看你的lisp-MATLAB實現,因爲直到今天我一直使用MATLAB來達到我的目的,如果我能以某種方式給lisp發送命令,我真的很想看到它。如果你喜歡,你也可以發郵件給我。非常感謝你提前。 – YBE 2012-02-18 19:03:10

+0

上面的鏈接看起來像一個很好的開始。比任何類型的文件IO更加動態可能可以讓你。我使用的文件IO解決方案只是生成要在txt文件中繪圖的數據,然後發出一個m文件來繪製該文件中的數據。你用cgn去的路線似乎好多了;並保持一切共同的lisp;我對cgn沒有任何經驗,所以我不能在那裏幫忙。如果你真的想用Matlab來繪圖,lisp和Matlab之間的某種更加動態的接口是正確的方法。套接字?我知道lisp支持他們;對MLAB不確定。 – 2012-02-18 21:43:29

回答

0

我不確定我完全理解你在問什麼,但是如果你想爲你繪製的最後一個字符串添加一個陰謀(並且你正在使用gnuplot 4.4),下面的技巧就是:

gnuplot> plot sin(x),cos(x) #plot sin and cos in an xterm window 
gnuplot> eval GPVAL_LAST_PLOT."cos(x+pi/2.5)" #add cos(x+pi/2.5) to the current plot 

無論如何,我不知道這是你要求的,因爲我不使用Matlab,但我希望它是。

1

不幸的是,在gnuplot中繪製單點並不容易,但幸運的是這裏有一些簡單的黑客攻擊:Plotting a Single Point with Gnuplot。但是,這裏討論的方法echo只能在Unix環境下工作。

在你的程序中使用replot而不是plot應該有希望給你一個隨着時間的推移而保留以前的點的圖形。

另一種方式,這是我用python,是我把數據點放在一個文件。在每次迭代中,我給文件添加點,然後再次用gnuplot進行繪圖。這有點難看,但它在大多數情況下都能勝任。

+0

這就是我現在正在做的事情。使用通用的lisp我將一個單一的點添加到一個文本文件,然後繪製它。這個問題很明顯,隨着文本文件變大,每個時間步的繪圖時間變慢。 – YBE 2012-04-20 02:33:01