2014-12-02 42 views
0

我在bash中編程,我嘗試使用gnuplot創建4個文件中的一個圖。 我的文件在第一列中包含日期,在其餘10列中包含不同深度的海洋溫度。我得到錯誤,第0行:無效命令和第0行:需要常量表達式。Gnuplot - 在一個圖中繪製多個文件

MyVar="THO"   
MySeas="Annual Win Spr Aut Sum"   
MyWorkDir=/work/InterAnnual  

echo "change dir"   
cd $MyWorkDir    
MyFileArx1=0001_field_${MyVar}.grb.regular  
MyFileArx21=0021_field_${MyVar}.grb.regular  
MyFileArx25=0025_field_${MyVar}.grb.regular  
MyFileArx26=0026_field_${MyVar}.grb.regular  

for MySeasName in ${MySeas} ;do  
MyFile1=${MyFileArx1}_sm_${MySeasName}.col.dat  
MyFile21=${MyFileArx21}_sm_${MySeasName}.col.dat  
MyFile25=${MyFileArx25}_sm_${MySeasName}.col.dat  
MyFile26=${MyFileArx26}_sm_${MySeasName}.col.dat  

gnuplot << EOF  
set term postscript eps enhanced color solid   
set out 'InterAnnual.${MySeasName}.6.eps'  
set key right top    
set grid  
set xrange [ 800:2000 ]   
set size 1, 0.5   
set xlabel "year"  
set ylabel " T (C) "  
plot "${MyFile1}" u 1:11 t 'Level-6 ${MySeasName} mil0001' w l lt, \  
"${MyFile21}" u 1:11 t 'Level-6 ${MySeasName} mil0001' w l lt, \  
"${MyFile25}" u 1:11 t 'Level-6 ${MySeasName} mil0001' w l lt, \  
"${MyFile26}" u 1:11 t 'Level-6 ${MySeasName} mil0001' w l lt  
EOF    
done 

`

+1

bash不喜歡尾隨空格。嘗試刪除第31行EOF之後的空格和反斜槓(\)第27-30行之後的空格(在gnuplot/plot命令中延續反斜槓之後) – 0range 2014-12-02 18:00:05

+0

非常感謝@Orange提供您的答案。我嘗試過,但不幸的是沒有更好的。 – Maria 2014-12-03 02:36:07

+2

對我來說,當我刪除尾部空格時,錯誤消息更改爲「行0:無效表達式」。無效的表達式錯誤是因爲儘管存在關鍵字,也沒有定義lt(即,刪除lt或將其放在後面,例如lt 2)。 – 0range 2014-12-03 02:46:00

回答

0

該腳本時,我在gnuplot的部分增加:設定的multiplot。 例如:

gnuplot << EOF  
set multiplot  

...然後其餘的行。

+0

奇怪,因爲你只有一個'plot'命令。你有沒有嘗試@ Orange的第二個建議? ('lt'需要一個數字) – Christoph 2014-12-03 07:50:49

+0

當然我試過了!我正在嘗試從昨天開始的一整天。設置多槽是唯一的工作。這很奇怪,因爲無處說這個,除了從gnuplot手冊中隱藏的例子。 – Maria 2014-12-03 10:36:05

+0

http://gnuplot.sourceforge.net/docs_4.2/node203.html-其中說:對於某些終端,直到命令未設置多個時隙被給出時才顯示圖表,這導致整個頁面被繪製,然後返回gnuplot轉換爲正常的單曲圖模式。對於其他終端,每個單獨的繪圖命令都會生成更新後的顯示,可以通過重新繪製所有以前的繪圖和新添加的繪圖,也可以將新繪圖添加到現有顯示中。 – Maria 2014-12-03 10:45:17

相關問題