我有一个csv文件,其格式如下,有四列(作为MWE
):
xcoord1,ycoord1,xcoord2,ycoord2
0.1,0.2,0.4,0.3
0.5,0.3,0.7,0.5
我想使用gnuplot绘制每个xcoord1,ycoord1
到xcoord2,ycoord2
的一条线。例如,在这种情况下,我会从0.1,0.2
到0.4,0.3
和0.5,0.3
到0.7,0.5
画两条线。
怎么可能?
答案 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