gnuplot - 如何获得与 3d 绘图具有相同级别颜色的等高线

mar*_*tin 4 plot gnuplot colors contour

我有一个用 gnuplot 获得的 3 维图,为此我还计算了等高线:

将 pm3d 设置为 s

设置调色板 rgbformulae 33,13,10

设置轮廓

未设置标签

设置 cntrparam 级别增量 1,1,5

sp "dati.dat" u 1:2:3 wl ls 7 notitle

我真的很想用 3d 图中相应级别中指定的相同颜色绘制轮廓线。我没有找到任何有用的帖子。这在某种程度上可能吗?

Sch*_*sch 5

您必须在palette命令中包含该sp命令:

set pm3d at s
set palette rgbformulae 33,13,10
set contour
unset clabel
set cntrparam levels incremental -100,10,100

sp x*y w l ls 7 palette notitle
Run Code Online (Sandbox Code Playgroud)

palette选项会将您的定义从 line 应用2到等高线,您将得到以下图:

表面和轮廓线

注意:由于缺少合适的输入文件,轮廓级别已更改为-100,10,100适应x*y我选择绘制的函数。


如果你想在表面上保留一个黑色网格,我建议使用multiplot并简单地在表面顶部绘制网格。这是更新后的代码:

set pm3d at s
set palette rgbformulae 33,13,10
set contour
unset clabel
set cntrparam levels incremental -100,10,100

set multiplot

sp x*y w l ls 7 palette notitle

unset contour

sp x*y w l ls 7 notitle

unset multiplot
Run Code Online (Sandbox Code Playgroud)

unset两个绘图命令之间的轮廓很重要。这样,您将只使用第二个sp命令获取网格(并且palette那里也没有选项)。

现在,该示例如下所示:

表面、等高线和黑色网格


如果您尝试手动旋转使用 - 命令生成的图形multiplot,您将失去等高线(因为它们是首先绘制的),如本答案中所述。如果默认方向不适合您的需要,请set view在调用 multiplot 之前使用。