绘图向量仅与gnuplot对齐

时间:2017-05-29 15:24:27

标签: gnuplot

我只需绘制矢量头,但使用以下

plot 'plot.txt' u 1:2:($3*factor):($4*factor) w vector lc rgb 'black'

我获得了所有的载体。我只想要头脑。

所以我需要删除仅保留头部的矢量的一部分。我怎么画这个?

谢谢。

1 个答案:

答案 0 :(得分:1)

@Christoph联想到的答案确实包含了关键因素:

  

您需要的正确命令是fixed,它允许仅绘制头部

但是,这里应该稍微具体一点。关键字fixed本身不会产生“仅头部箭头”。其主要目的是保证箭头的大小与向量的长度无关。因此,为了仅产生具有头部的箭头,人们可能仅仅将箭头的起点沿终点方向移动,直到它“隐藏”在头部内部。这就是为什么这个answer中最右边的箭头似乎只是由它的头部形成的 - 身体(线)只是被头部“覆盖”。

因此,为了在实践中这样做,可以继续:

reset

set terminal pngcairo
set output 'fig.png'

$db <<EOF
0.0 0.0    1  1
3.0 0.0   -1  1
3.0 3.0   -1 -1
0.0 3.0    1 -1
EOF

set xr [0:3]
set yr [0:3]

set size square

set xtics 0,1,3 in
set ytics 0,1,3 in
set mxtics 2
set mytics 2

unset key

set style arrow 1 head filled size screen 0.05,45 fixed lc rgb 'royalblue'
set style arrow 2 head filled size screen 0.05,45 fixed lc rgb 'dark-spring-green'

factor=0.5

sigma=0.99

plot \
    $db using 1:2:(factor*$3):(factor*$4) with vectors as 2,\
    $db using ($1+sigma*$3):($2+sigma*$4):((1-sigma)*$3):((1-sigma)*$4) with vectors as 1

plot语句的第一部分生成了因子0.5缩放的箭头(绿色)。由于它们的长度仍然很大,它们与头部和身体一起出现。在第二部分中,存在移位因子0<=sigma<=1 - 语句($1+sigma*$3):($2+sigma*$4):((1-sigma)*$3):((1-sigma)*$4)然后请求具有与之前相同的端点的箭头(例如,第一列和第三列的总和独立于sigma),但是沿着箭头方向移动原点(sigma=0恢复原始箭头,sigma=1将产生零长度箭头)。因此,如果sigma足够接近1,则只能看到箭头:

enter image description here

相关问题