2017-05-29 49 views
0

我需要只绘制矢量头,但使用以下情节向量只有头上有gnuplot的

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

我得到的所有向量。我只想要头。

所以我需要删除一部分矢量只保留头部。我该如何绘制这个图?

谢谢。

+0

https://stackoverflow.com/a/41112482/2604213 – Christoph

+0

@Christoph谢谢你,我看到了它,但它不解决我的问题。我只需要绘制所有向量的头部,而不是只绘制一个向量。你能在这里写下我需要输入到gnuplot的代码吗?谢谢 – user34615

回答

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=0恢复原始箭头,sigma=1将产生零长度箭头)。因此,如果sigma足够接近1,只有箭头头是可见的:

enter image description here

+0

非常感谢你! – user34615