gnuplot-正确剪裁三维绘图(splot)

gnuplot-正确剪裁三维绘图(splot),plot,gnuplot,clip,Plot,Gnuplot,Clip,免责声明:我对Gnuplot完全陌生,所以我可能遗漏了一些明显的东西 对于我必须给出的演示,我尝试使用Gnuplot创建plot的交互式版本 到目前为止,我已经提出了以下代码: set hidden3d set isosamples 40 set border 4095 set xrange [-1 : 5] set yrange [-3 : 3] set zrange [-10 : 10] set xtics 2 set ytics 2 set ztics 2 f(x,y) = x**2 +

免责声明:我对Gnuplot完全陌生,所以我可能遗漏了一些明显的东西

对于我必须给出的演示,我尝试使用Gnuplot创建plot的交互式版本

到目前为止,我已经提出了以下代码:

set hidden3d
set isosamples 40
set border 4095
set xrange [-1 : 5]
set yrange [-3 : 3]
set zrange [-10 : 10]
set xtics 2
set ytics 2
set ztics 2
f(x,y) = x**2 + y**2 * (1 - x)**3
splot f(x,y)
pause -1
然而,在绘图的边界处(特别是相对于z轴的边界处),绘图被截断的方式让我觉得非常难看;见下文。基本上,我想要的是绘制所有线条,就像我的绘图范围是(例如)
-50:50
,但最终只应显示绘图与方框的“交点”
[-1:5]x[-3:3]x[-10:10]
。现在似乎正在发生的是,任何“绘图段”如果在由
xrange
-
zrange
确定的框外至少有一个点,则根本不会绘制

(如何)我可以改变这个吗


从未来开始回答,有点,所以这可能不算

gnuplot到5.2的版本不能完全满足您的需要。但是,开发版本5.3默认情况下会执行此操作,只要您使用pm3d曲面而不是hidden3d曲面。以下是当前开发代码呈现的绘图:

set border 4095
unset colorbox
set view 56, 15, .75, 1.75
set samples 40, 40
set isosamples 40, 40
set xyplane 0
set grid x y z vertical
set pm3d depthorder border linewidth 0.100
set pm3d clip z 
set pm3d lighting primary 0.8 specular 0.3 spec2 0.3

set xrange [-1 : 5]
set yrange [-3 : 3]
set zrange [-10 : 10]
set xtics 1 offset 0,-0.5
set ytics 1 offset 0,-0.5
set ztics 5

f(x,y) = x**2 + y**2 * (1 - x)**3
splot f(x,y) with pm3d fillcolor "cyan"
关键是命令
设置pm3d剪辑z
。这将是未来版本中的默认设置,但在5.2版中不受支持。您可以从gnuplot.sf.net上当前的git源代码存储库进行构建,也可以等待5.4版在2020年春季发布。

也许您可以使用以下代码行强制zrange

set ticslevel 0