gnuplot - 正确裁剪 3D 图(splot)
Posted
技术标签:
【中文标题】gnuplot - 正确裁剪 3D 图(splot)【英文标题】:gnuplot - Properly clipping a 3D plot (splot) 【发布时间】:2019-11-27 14:52:48 【问题描述】:免责声明:我对 Gnuplot 完全陌生,所以我可能遗漏了一些明显的东西......
对于我必须提供的演示文稿,我正在尝试使用 Gnuplot 创建this 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
确定的框外至少有一个点的“情节段”根本不会被绘制出来。
(如何)我可以改变这个?
【问题讨论】:
【参考方案1】:从未来回答,有点,所以这可能不算数......
从 5.2 到 5.2 的 gnuplot 版本无法完全满足您的需求。但是,只要您使用 pm3d 表面而不是 hidden3d 表面,开发版本 5.3 就会默认执行此操作。这是当前开发代码呈现的情节:
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"
关键是命令set pm3d clip z
。这将是未来版本的默认设置,但在 5.2 版中不受支持。您可以从 gnuplot.sf.net 上的当前 git 源存储库构建,或者等待 5.4 版预计在 2020 年春季发布。
【讨论】:
【参考方案2】:也许你可以通过下面这行代码来强制zrange。
set ticslevel 0
【讨论】:
以上是关于gnuplot - 正确裁剪 3D 图(splot)的主要内容,如果未能解决你的问题,请参考以下文章