我一直在考虑通过提供参数选项的显式公式在gnuplot
中绘制一些3d图。
我想用一种唯一的颜色填充网格间隙。
我知道我可以使用with pm3d
选项填充网格,但是颜色与函数z
的参数有关。
这是一个示例:
set parametric
set hidden3d
sp u,u,u*v w pm3d,\
v,u*v,v w pm3d
如何将第一条曲线的颜色(在内部网格中)设置为蓝色,将另一条曲线设置为红色?
答案 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