如何在gnuplot中跳过空行

3
我想使用gnuplot绘制以下文件的连续线图。问题在于每个点后面都有一个空行。我可以得到一个带有点的图形。你能帮助我吗?
   x y type

   0 -1866.47  i

 100 -1866.52  i

 200 -1867.11  i

 300 -1868.78  i

 400 -1871.58  i

 500 -1875.4   i

 600 -1880.12  i

 700 -1885.62  i

 800 -1891.81  i

 900 -1898.63  i

1000 -1906.02  i

1100 -1913.94  i

1200 -1922.33  i

1300 -1931.17  i

1400 -1940.43  i

1500 -1950.08  i

1600 -1960.11  i

1700 -1970.49  i

1800 -1981.22  i

1900 -1992.27  i

2000 -2003.63  i
3个回答

2

您可以使用外部命令过滤文件。例如,在*nix操作系统中,您可以使用awk

plot "< awk 'NF!=0 { print $0 }' file.dat" w l

(在awk语法中,NF表示给定行中字段的数量,$0包含整行内容。)

嗨,Joce,这个命令在x11终端中没有生成任何图形。 - ehsan
file.dat 包含上述示例数据吗?使用您的示例,您必须跳过第一行。但无论如何,您都应该收到错误消息。 - Joce NoToPutinsWarInUkraine
我发现先使用(grep -e " " file.dat > file1.dat)编辑文件更容易,以删除空行,然后再绘制它。问题是文件中有几个x,y块。gnuplot无法识别这些块并将所有线条都显示为相同颜色。 - ehsan
这是一种可能性,尽管在某些情况下可能不可行(例如,如果文件正在被后台作业更新),因此我的答案更为普遍。如果您的数据块到处都有换行符,那么它们会被标记为什么? - Joce NoToPutinsWarInUkraine

0

你可以用 splot 来作弊 :D

set ticslevel 0
set view 90,0
unset ytics
set xtics offset 0,-1
splot 'empt.txt' u 1:1:2 w l t 'title'

enter image description here


0
一个相对较晚的答案,但从gnuplot 5.0.0(2015)开始,您就有了绘图样式with table(请查看help with table)。因此,您可以在不使用外部工具(跨平台)和不进行splot-"欺骗"的情况下完成它。
只需在数据块(或文件)中绘制您的文件(或数据块),即可删除空行。 脚本:
### remove empty lines in data
reset session

$Data <<EOD
   x y type

   0 -1866.47  i

 100 -1866.52  i

 200 -1867.11  i

 300 -1868.78  i

 400 -1871.58  i

 500 -1875.4   i

 600 -1880.12  i

 700 -1885.62  i

 800 -1891.81  i

 900 -1898.63  i

1000 -1906.02  i

1100 -1913.94  i

1200 -1922.33  i

1300 -1931.17  i

1400 -1940.43  i

1500 -1950.08  i

1600 -1960.11  i

1700 -1970.49  i

1800 -1981.22  i

1900 -1992.27  i

2000 -2003.63  i
EOD

set table $NoEmptyLines
    plot $Data u 1:2 w table
unset table

plot $NoEmptyLines u 1:2 w l lc rgb "red"
### end of script

结果:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接