如何在 gnuplot 中跳过空行

问题描述 投票:0回答: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
gnuplot
3个回答
2
投票

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

awk
:

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

(在 awk 语法中,

NF
给出给定行中的字段数,
$0
包含整行)


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'


0
投票

一个相当晚的答案,但从(2015)的gnuplot 5.0.0开始,你就拥有了绘图风格

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

结果:

补充:

实际上,不写入额外表格(和内存)的一行行将采用绘图风格

with vectors
。记住前一个坐标并绘制从当前坐标到它的向量。这至少应该适用于 gnuplot>=4.4.0 (2010)。

plot x1=y1=NaN "Data.dat" u (x0=x1,x1=$1):(y0=y1,y1=$2):(x0-x1):(y0-y1) w vec nohead
© www.soinside.com 2019 - 2024. All rights reserved.