3d Gnuplot:splot网格填充了一种完全相同的颜色

3d Gnuplot:splot网格填充了一种完全相同的颜色,3d,gnuplot,3d,Gnuplot,我一直在考虑在gnuplot中通过一个带有参数选项的显式公式绘制一些3d图。 我想用一种完全相同的颜色填充网格间隙。 例如,我知道我可以使用带有pm3d的选项填充网格,但是颜色与函数z参数有关。 以下是一个例子: set parametric set hidden3d sp u,u,u*v w pm3d,\ v,u*v,v w pm3d 如何将第一条曲线的颜色(在splot网格内)设置为蓝色,将另一条曲线设置为红色?有一个简单的答案,它完全符合您的要求,但它仅在gnuplot的开发版本

我一直在考虑在
gnuplot
中通过一个带有参数选项的显式公式绘制一些3d图。 我想用一种完全相同的颜色填充网格间隙。 例如,我知道我可以使用带有pm3d的
选项填充网格,但是颜色与函数
z
参数有关。 以下是一个例子:

set parametric
set hidden3d
sp u,u,u*v w pm3d,\
   v,u*v,v w pm3d


如何将第一条曲线的颜色(在splot网格内)设置为蓝色,将另一条曲线设置为红色?

有一个简单的答案,它完全符合您的要求,但它仅在gnuplot的开发版本中可用。以前的版本有一个bug,使得显式颜色的分配与pm3d中的隐藏曲面处理不兼容。如果您能够从development git存储库构建gnuplot,它将接受以下命令序列:

set parametric
set pm3d depthorder
sp u,u,u*v w pm3d fillcolor "blue", \
   v,u*v,v w pm3d fillcolor "red"
请注意,“设置hidden3d”不适用于pm3d曲面。如果您无法从源代码构建,那么最好切换到非参数化等效选项板和自定义选项板,您知道其中的一些选项板值为蓝色,另一个选项板值为红色。在这种情况下,命令序列类似于

unset parametric
set palette defined (0.0 "red", 1.0 "blue")
set pm3d depthorder noborder
splot '++' using 1:1:($1*$2):(1.0) with pm3d, \
      '++' using 2:($1*$2):2:(0.0) with pm3d
pm3d中曲面的相交不是平滑的,因为每个面都已绘制或未绘制,因此不会细分碰巧相交的面。您可以通过使用更精细的网格将此最小化:

set samples 200
set isosamples 200

非常感谢你!Gnuplot每次都让我感到惊讶:)