在plot命令中使用awk的Gnuplot错误

时间:2016-07-06 15:59:39

标签: gnuplot

使用代码时出现以下错误。

gnuplot> set terminal epslatex size 13.1cm,6cm color colortext
Terminal type set to 'epslatex'
Options are '   leveldefault color colortext \
   dashed dashlength 1.0 linewidth 1.0 butt noclip \
   nobackground \
   palfuncparam 2000,0.003 \
   input size 13.10cm, 6.00cm "" 11  fontscale 1.0 '
gnuplot> set output 'C:\MajCha\gnuplot\alpha_cl.tex'
gnuplot> filename= 'C:\MajCha\gnuplot\DU_08-W-180-65_cf_c_02_InpPrePro.txt'
gnuplot> #
gnuplot> set xrange [-10:10]
gnuplot> set yrange [-3:3]
gnuplot> plot "< awk '$1==-180.0 { print $2, $3 }'" filename using 2:3
         warning: Skipping unreadable file "< awk '$1==-180.0 { print $2, $3 }'"
         No data in plot

gnuplot> #
gnuplot> unset output
gnuplot> reset

我怎么能修复这个错误。我希望在-180到180的循环范围内检查我§1= -180。请建议我一些可行的方法。

使用以下代码

reset
set terminal epslatex size 13.1cm,6cm color colortext
set output 'C:\MajCha\gnuplot\alpha_cl.tex'
filename= 'C:\MajCha\gnuplot\DU_08-W-180-65_cf_c_02_InpPrePro.txt'
#
unset key
set xrange [-10:10]
set yrange [-3:3]
plot for [i=-180:180] filename using (($1==i)?$2:1/0):3 
#
unset output
reset

输出数字是 enter image description here 使用以下代码

reset
set terminal epslatex size 13.1cm,6cm color colortext
set output 'C:\MajCha\gnuplot\alpha_cl.tex'
filename= 'C:\MajCha\gnuplot\DU_08-W-180-65_cf_c_02_InpPrePro.txt'
#
unset key
set xrange [-10:10]
set yrange [-3:3]
plot for [i=-180:180] filename using (($1==i)?$2:1/0):3 with lines 
#
unset output
reset

输出数字是 enter image description here

1 个答案:

答案 0 :(得分:1)

由于filename是MWE中的gnuplot变量,您可以做的是将其内容连接到awk命令:

plot "<awk '$1==-180.0 { print $2, $3 }' ".filename using 1:2

在结束"之前不要错过空格字符:这将评估命令

awk '$1==-180.0 { print $2, $3 }' C:\MajCha\gnuplot\DU_08-W-180-65_cf_c_02_InpPrePro.txt

我相信你想做什么。目前,它正在评估没有文件的awk,因此没有数据。

请注意,由于您的awk命令仅打印$2$3,因此其输出包含2列,因此您可能希望在gnuplot中使用using 1:2

最后,如果这个MWE接近你真正希望实现的目标,我建议只删除awk并使用gnuplot命令只是为了简单:

plot filename using (($1==-180)?$2:1/0):3