gnuplot - 正确裁剪 3D 图 (splot)
gnuplot - Properly clipping a 3D plot (splot)
免责声明:我是 Gnuplot 的新手,所以我可能遗漏了一些明显的东西...
对于我必须做的演示,我正在尝试使用 Gnuplot 创建交互式版本的 this 图。
到目前为止,我想出了以下代码:
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
,但最后只有 "intersection" 框 [-1:5] x [-3:3] x [-10:10]
] 实际上应该显示。现在似乎正在发生的事情是,任何 "plot segment" 在由 xrange
-zrange
确定的框外至少有一个点根本不会被绘制。
(How) can I change this?
未来的回答,有点,所以这可能不算...
gnuplot 到 5.2 的版本不能完全满足您的要求。但是,只要您使用 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 源存储库构建,或等待预计在 Spring 2020 年发布的 5.4 版。
也许您可以使用以下代码行来强制使用 zrange。
set ticslevel 0
免责声明:我是 Gnuplot 的新手,所以我可能遗漏了一些明显的东西...
对于我必须做的演示,我正在尝试使用 Gnuplot 创建交互式版本的 this 图。
到目前为止,我想出了以下代码:
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
,但最后只有 "intersection" 框 [-1:5] x [-3:3] x [-10:10]
] 实际上应该显示。现在似乎正在发生的事情是,任何 "plot segment" 在由 xrange
-zrange
确定的框外至少有一个点根本不会被绘制。
(How) can I change this?
未来的回答,有点,所以这可能不算...
gnuplot 到 5.2 的版本不能完全满足您的要求。但是,只要您使用 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 源存储库构建,或等待预计在 Spring 2020 年发布的 5.4 版。
也许您可以使用以下代码行来强制使用 zrange。
set ticslevel 0