GNUPLOT 编织调色板匹配热图

GNUPLOT splot color palete matching jetmap

我正在尝试在 gnuplot 中重现 rosenbrock 函数的下图。来源 Wikipedia.

我的理解是图像是使用 Matlab/Matplotlib 中的 JET 颜色图创建的。

这是我在 gnuplot 中的尝试。宏 MATLAB 来源于 here and Macro JET was sourced from here.

我认为将 orange/yellow 一直降低到 500 会有所帮助。我不确定如何在 gnuplot 中执行此操作。

另外 size 重现 MATLAB 之类的视图会是什么?

reset session
set terminal wxt size 800,600 enhanced font 'Verdana,10' persist
set view 50,330
set isosample 30
set xlabel "x"
set ylabel "y"
set zlabel "f(x,y)" rotate
set pm3d


set macros
JET="define (0 0 0 0.5, 1./8 0 0 1, 3./8 0 1 1, 5./8 1 1 0, 7./8 1 0 0, 1 0.5 0 0)"

MATLAB = "defined (0  0.0 0.0 0.5, \
                   1  0.0 0.0 1.0, \
                   2  0.0 0.5 1.0, \
                   3  0.0 1.0 1.0, \
                   4  0.5 1.0 0.5, \
                   5  1.0 1.0 0.0, \
                   6  1.0 0.5 0.0, \
                   7  1.0 0.0 0.0, \
                   8  0.5 0.0 0.0 )"


set palette @JET

splot [x=-2:2] [y=-1:3] (1-x)**2+100*(y-x**2)**2 with pm3d notitle

set output

颜色映射

如果您将颜色映射更改为对数刻度,我认为您将达到大部分目标, 如果您调整调色板范围的下限,剩下的就是:

# ... as above ...
set log cb
set cbrange [0.1 : *]
unset mcbtics
replot

边界框

gnuplot 版本 5.4:

set wall x1  fillcolor "gray90"
set wall y1  fillcolor "gray90"
set wall z0  fillcolot "gray50"
set xyplane at 0
set border 127
set grid vertical
replot