Gnuplot:填充完全一种颜色的绘图网格

时间:2018-08-01 10:13:34

标签: 3d gnuplot

我一直在考虑通过提供参数选项的显式公式在gnuplot中绘制一些3d图。 我想用一种唯一的颜色填充网格间隙。 我知道我可以使用with pm3d选项填充网格,但是颜色与函数z的参数有关。 这是一个示例:

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

Example plot

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

1 个答案:

答案 0 :(得分:1)

有一个简单的答案可以完全满足您的要求,但仅在gnuplot的开发版本中可用。以前的版本存在一个错误,使明确的颜色分配与pm3d中的隐藏表面处理不兼容。如果您能够从开发git仓库构建gnuplot,它将接受以下命令序列:

set parametric
set pm3d depthorder
sp u,u,u*v w pm3d fillcolor "blue", \
   v,u*v,v w pm3d fillcolor "red"

请注意,“ set 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