2017-02-07 47 views
1

有沒有人有繪製時間相關數據的方便方法?假設你有一段程序輸出一段時間的軌跡,所以有一個3列的txt文件(t,x,y)。我想創建一個視頻文件(mp4 avi gif等),以顯示後面兩列的進展情況。我編寫了一個輸出數據的程序,調用gnuplot,輸出一個png,然後重複使用,然後使用ffmpeg將所有的pngs混合成mp4。然而,每個png產生的時間需要很長時間(大約0.2秒),而2分鐘30fps則需要大約12分鐘才能執行。另外,我最終創建了一個3600 png的目錄,然後刪除該目錄。我不禁感到,過去幾十年來,有人開發出一種更簡單的方法。必須有更優雅的方式來做這樣的事情。我也運行Windows 10。Fortran代碼的動畫繪圖模塊

+0

是不可能寫一個包含所有幀的數據文件並在gnuplot中一次轉換它? (使用「set terminal gif animate ...」,「reread」,「plot ... index ...」等) – roygvib

回答

1

這也可能是您的應用程序矯枉過正,但你可能要考慮編寫(或轉換)您的數據VTK格式(見http://www.cacr.caltech.edu/~slombey/asci/vtk/vtk_formats.simple.html),然後處理通過的Paraview(http://www.paraview.org/)或訪問(https://wci.llnl.gov/simulation/computer-codes/visit)的結果。傳統的VTK格式從Fortran編寫起來相對容易;最難的部分是理解如此靈活 - 無人可以解釋 - 如何做到簡單的事情 - 與它的文件格式。第二個最難的部分是找到你想要的選項隱藏在VisIt UI中。現在有用於編寫VTK的F90庫(請參閱https://people.sc.fsu.edu/~jburkardt/f_src/vtk_io/vtk_io.html),這可能會給您一個良好的開端。

發光的讚美,我知道,但是一旦你排序完畢,用VisIT生成動畫圖很容易,它應該比gnuplot快得多。基於直接從Fortran代碼編寫的數據,我使用這種方法來製作動畫的溫度,熱量生成等2D地圖。

另一種策略是查找VisIt支持的更簡單的數據格式並使用它們。我選擇了VTK,因爲它(有點)是由多個查看者記錄和支持的,但可能會有更好的格式滿足您的需求。

+0

或者其他可以從Paraview打開的數據類型。它們中有很多,有些可以使用Fortran綁定。 –