我想使用带有连续线的 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
您可以使用外部命令过滤掉文件。例如,在 *nix 操作系统中,您可以使用
awk
:
plot "< awk 'NF!=0 { print $0 }' file.dat" w l
(在 awk 语法中,
NF
给出给定行中的字段数,$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