gnuplot在不均匀的网格上严重渲染热图

gnuplot在不均匀的网格上严重渲染热图,gnuplot,heatmap,Gnuplot,Heatmap,我试图绘制一个3D结果的热图,一个f(x,y)函数,在一个不均匀的网格上获得。 我得到的图在图的顶部给了我一些难看的空白。 下面是重现我所面临问题的基本脚本 #Generate some dummy data f(x,y) = sqrt(x**2 + y**2) set table set samples 1000 set output "table.dat" splot [0:10][0:10] f(x,y) 打印脚本: # plot it set term x11 set out set

我试图绘制一个3D结果的热图,一个f(x,y)函数,在一个不均匀的网格上获得。 我得到的图在图的顶部给了我一些难看的空白。 下面是重现我所面临问题的基本脚本

#Generate some dummy data
f(x,y) = sqrt(x**2 + y**2)
set table
set samples 1000
set output "table.dat"
splot [0:10][0:10] f(x,y)
打印脚本:

# plot it
set term x11
set out
set pm3d map 
splot [1:5] [0:2] "table.dat" u ($1):($2/$1):($3)
由于y轴值取决于x轴,因此栅格现在为偶数。如下图所示,gnuplot未能填充靠近绘图顶部边界的一些空间。更改轴限制没有帮助

你知道如何填充白色的三角形,让这个图看起来更好吗


谢谢你的帮助

您可以使用
dgrid3d
进行二维插值。使用
规范
($1):($2/$1):($3)
您拥有数据点的域非常不规则。通过将所有其他值设置为NaN,可以告诉
dgrid3d
,您只对一个小矩形感兴趣。例如:

set pm3d map 
set dgrid3d 100,100 qnorm 4
splot [1:5] [0:2] "table.dat" u ($1 >= 1 && $1 <= 5 ? $1 : 1/0):($2/$1 > 0 && $2/$1 < 2 ? $2/$1 : 1/0):3 
设置pm3d地图
设置dgrid3d 100100 qnorm 4
splot[1:5][0:2]“table.dat”u($1>=1&&$10&&$2/$1<2?$2/$1:1/0):3


您必须尝试使用
dgrid3d
的各种选项以获得合理的插值。

您可以使用
dgrid3d
进行二维插值。使用
规范
($1):($2/$1):($3)
您拥有数据点的域非常不规则。通过将所有其他值设置为NaN,可以告诉
dgrid3d
,您只对一个小矩形感兴趣。例如:

set pm3d map 
set dgrid3d 100,100 qnorm 4
splot [1:5] [0:2] "table.dat" u ($1 >= 1 && $1 <= 5 ? $1 : 1/0):($2/$1 > 0 && $2/$1 < 2 ? $2/$1 : 1/0):3 
设置pm3d地图
设置dgrid3d 100100 qnorm 4
splot[1:5][0:2]“table.dat”u($1>=1&&$10&&$2/$1<2?$2/$1:1/0):3


您必须使用
dgrid3d
的各种选项进行试验,以获得合理的插值。

很难想象它看起来会有多好。这是正确的。我的意思是顶部没有白色三角形。这里有一些要绘制的数据,应该是彩色的。如果要填充样本之间的数据点,必须使用插值,这可以通过
set dgrid3d
完成。另外,请注意,您的表格在
x
中的分辨率非常好(1000点),但在
y
中的分辨率非常差(10点)。使用更精细的网格(
set isosamples 1000
)插值效果更好。谢谢您的建议。我无法更改原始数据采样,上面的脚本只是一个示例。不幸的是,dgrid3d似乎无法正确处理这种情况,我认为问题在于y轴依赖于x轴:u($1):($2/$1):($3)。很难想象它到底应该看起来怎么样。我说的对。我的意思是顶部没有白色三角形。这里有一些要绘制的数据,应该是彩色的。如果要填充样本之间的数据点,必须使用插值,这可以通过
set dgrid3d
完成。另外,请注意,您的表格在
x
中的分辨率非常好(1000点),但在
y
中的分辨率非常差(10点)。使用更精细的网格(
set isosamples 1000
)插值效果更好。谢谢您的建议。我无法更改原始数据采样,上面的脚本只是一个示例。不幸的是,dgrid3d似乎无法正确处理这种情况,我认为问题在于y轴依赖于x轴:u($1):($2/$1):($3)。太好了!谢谢你的把戏!遗憾的是dgrid3d没有根据绘图范围进行此操作。太好了!谢谢你的把戏!遗憾的是,dgrid3d没有根据绘图范围执行此操作。