gnuplot在不均匀的网格上严重渲染热图
我试图绘制一个3D结果的热图,一个f(x,y)函数,在一个不均匀的网格上获得。 我得到的图在图的顶部给了我一些难看的空白。 下面是重现我所面临问题的基本脚本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
#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没有根据绘图范围执行此操作。