在gnuplot中在一条曲线前面和另一条曲线后面绘制箭头

在gnuplot中在一条曲线前面和另一条曲线后面绘制箭头,gnuplot,Gnuplot,我用gnuplot画了一个圆锥体,箭头指向圆锥体的对称轴。唯一的问题是我不知道如何将箭头正确地放入图片的3D透视图中。默认情况下,箭头显示在整个圆锥体的后面。如果我将“front”选项添加到箭头,它将显示在整个圆锥体的前面。但是,从透视图上看,箭头应该位于圆锥体后半部的前面,圆锥体前半部的后面 显而易见的解决方案是将绘制圆锥体的函数分成两半,并使箭头位于一条曲线的前面和另一条曲线的后面。有没有办法做到这一点(即,手动设置绘制曲线和其他对象的顺序)?如果没有,是否有人有好的解决方法?(我能想到的唯

我用gnuplot画了一个圆锥体,箭头指向圆锥体的对称轴。唯一的问题是我不知道如何将箭头正确地放入图片的3D透视图中。默认情况下,箭头显示在整个圆锥体的后面。如果我将“front”选项添加到箭头,它将显示在整个圆锥体的前面。但是,从透视图上看,箭头应该位于圆锥体后半部的前面,圆锥体前半部的后面

显而易见的解决方案是将绘制圆锥体的函数分成两半,并使箭头位于一条曲线的前面和另一条曲线的后面。有没有办法做到这一点(即,手动设置绘制曲线和其他对象的顺序)?如果没有,是否有人有好的解决方法?(我能想到的唯一方法是使用线条手动绘制箭头,但如果可能的话,我希望避免这种情况。)

下面是一个简单的工作示例。我使用了一个精细的网格,这样效果就清晰可见了

set arrow 1 from 0,0,0 to 0,0,1 lw 2
set isosamples 100
set xrange [-1:1]
set yrange [-1:1]
set zrange [-1:1]
set zrange [0:1] 
splot sqrt(x**2+y**2) 
要查看仅使用“front”选项作为修复的错误,请将第一行替换为:

set arrow 1 from 0,0,0 to 0,0,1 lw 2 front
提前感谢您的帮助


编辑:我在发帖后意识到这可以用multiplot来完成。但是似乎应该有一个更好的解决方案,所以如果您想到了,请告诉我。

要部分隐藏行,通常可以使用
设置隐藏3D
,但这不会影响使用
设置箭头放置的箭头。但是,它会影响使用
矢量绘制的箭头
打印样式:

set hidden3d
splot sqrt(x**2+y**2), '< echo "0 0 0 0 0 1"' with vectors
这将给出(见第4.6.4节):


谢谢你的帮助!你能解释一下“echo部分”吗?@LCsa这是在5.0之前的gnuplot版本中使用某种内联数据的一种方式,
@Christoph谢谢!我去看看。然后,我似乎对你的回音更困惑了。。。“0 0 0 1”部分。。。
set isosamples 100
set xrange [-1:1]
set yrange [-1:1]
set zrange [-1:1]
set zrange [0:1]
set hidden3d nooffset
set style arrow 1 lw 2 head filled size 0.1,20,70
unset key
set arrow nohead from 0,0,0 to 0,0,1 as 1 back
splot sqrt(x**2+y**2), '< echo "0 0 0 0 0 1"' with vectors arrowstyle 1