2014-12-02 40 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

相关问题