2013-08-07 128 views
1

您好我目前正在通過C++中的管道繪製文件中的數據。我寫了一個函數,讀入文本文件,處理信息,繪製文本文件中的數據,並根據需要繪製標籤和箭頭。Gnuplot C++從txt文件實時繪圖

現在我需要一種在循環中平滑繪圖的方式,以便每次迭代讀取並繪製不同的文本文件,並且不會使Gnuplot窗口閃爍。

例如:

for (unsigned int i = 0; i< 10; i++){ 
    Processing_Plotting(i, gp); 
} 

這是代碼我有在主程序中,將繪製所指示的文本文件的「i」。例如:laserData1,laserData2等。

當前情節閃爍並且由於其被稱爲速度而不可讀。 我已經找到了一種方式來與Gnuplot實時繪製數據,但沒有太多的運氣, 任何幫助,將不勝感激。由於

之類的事情,我繪製的一幅畫面: http://imgur.com/3eTpMaB

+1

你確定gnuplot是爲此做的嗎?我認爲它可能是爲靜態圖文件設計的。 –

+1

我碰到過這個 - http://users.softlab.ece.ntua.gr/~ttsiod/gnuplotStreaming.html - 前一段時間,從來沒有嘗試過但它可能是你感興趣的。 –

回答

2

有自帶的gnuplot-iostream庫動畫的一個例子。它不閃爍,至少不在我的機器上(Linux)。免責聲明:我是該圖書館的作者,所以這是一個無恥的插件。

你的代碼片段並不顯示你如何實際與gnuplot進行交互,但有三件事情你必須確保:1)不要關閉然後在每一幀後重新打開管道,2)打電話fflush每幀之後的管道,以及3)在幀之間添加延遲。要延遲Linux調用::usleep(microseconds)(和包括unistd.h),在Windows上調用::Sleep(milliseconds)幷包括windows.h

將動畫數據管理到gnuplot的事情是,你不知道它是否跟上。所以沖洗和睡眠是至關重要的。但是我用gnuplot構建了示波器,所以我知道它可以很好地工作。

+0

嗨,感謝,即時通訊使用管道發送到gnuplot。在審查我的代碼後,它似乎工作得更好。它略微閃爍,但比以前更容易看到。可能只需要調整睡眠值。歡呼 –

+0

不幸的是,這個API不支持3D圖。 – Madhatter

+1

它支持3D圖。包中包含這樣的例子。 –