在gnuplot中绘制两点之间的一条线

时间:2016-10-31 14:32:48

标签: plot gnuplot coordinates line

我有一个csv文件,其格式如下,有四列(作为MWE):

xcoord1,ycoord1,xcoord2,ycoord2
0.1,0.2,0.4,0.3
0.5,0.3,0.7,0.5

我想使用gnuplot绘制每个xcoord1,ycoord1xcoord2,ycoord2的一条线。例如,在这种情况下,我会从0.1,0.20.4,0.30.5,0.30.7,0.5画两条线。

怎么可能?

2 个答案:

答案 0 :(得分:3)

将线条绘制为没有箭头的矢量:

plot "file" using 1:2:($3-$1):($4-$2) with vectors nohead

答案 1 :(得分:1)

一种解决方案是预处理您的文件并生成一个Gnuplot脚本,该脚本将使用set arrow命令。或者,可以通过一些预处理直接绘制输入文件。诀窍是将数据文件中的每一行转换为单独的块,例如

xcoord1,ycoord1,xcoord2,ycoord2
0.1,0.2,0.4,0.3
0.5,0.3,0.7,0.5

将转换为

0.1 0.2
0.4 0.3

0.5 0.3
0.7 0.5
然后,

Gnuplot将仅连接一个块内的点。要做到这一点,你可以这样做:

plotCmd(fname)=sprintf("<gawk -F, 'NR>1{printf \"%%s\\t%%s\\n%%s\\t%%s\\n\\n\",$1,$2,$3,$4}' %s", fname)
plot plotCmd('input.csv') w lp