如何使用 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 samples
和 set isosamples
以获得更高或更低的分辨率。此外,检查 help pm3d
和 help 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
结果:
对于分段函数
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 samples
和 set isosamples
以获得更高或更低的分辨率。此外,检查 help pm3d
和 help 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
结果: