如何使用 gnuplot 绘制密度图

How to make a density plot using gnuplot

对于分段函数

f(x,y) = x < 0 ? 0 : 0 <= x && x < 1 && x*y < 1 ? x : 1

分解为以下 Mathematica 语言

f(x,y) = 0 if x < 0
f(x,y) = x if 0 <= x < 1 & xy < 1
f(x,y) = 1 otherwise

我想制作密度图,应该如下图所示

怎么办?我试过这样做

set hidden3d
set dgrid3d 50,50 qnorm 2
set view map
splot f(x,y) 

我知道这是不正确的。

编辑: 早些时候,我在定义分段函数时错误地写了 xy < 1 而不是 x*y < 1。我已经更正了。

在您的 f(x,y) 中,xy 应该是 x*y。检查以下内容。尝试采样,即 set samplesset isosamples 以获得更高或更低的分辨率。此外,检查 help pm3dhelp set palette.

代码:

### plot piecewise function as a map
reset session

set size ratio 0.5
f(x,y) = x < 0 ? 0 : 0 <= x && x < 1 && x*y < 1 ? x : 1

set samples 400
set isosamples 200
set palette defined (0 '#26548a', 0.5 '#e59e4a', 1 '#fff2bf')
set view map

set xlabel "d"
set xrange [-2:2]
set xtics 1
set ylabel "b"
set yrange [0:2]

splot f(x,y) w pm3d
### end of code

结果: