不同比例尺的gnuplot热图

不同比例尺的gnuplot热图,gnuplot,heatmap,Gnuplot,Heatmap,我很难用gnuplot为不同比例的数据创建热图 考虑以下示例数据集: 0.100 1.000 10.0 0.010 1.000 20.0 0.001 1.000 40.0 0.100 10.00 20.0 0.010 10.00 40.0 0.001 10.00 80.0 0.100 100.0 40.0 0.010 100.0 80.0 0.001 100.0 160

我很难用gnuplot为不同比例的数据创建热图

考虑以下示例数据集:

0.100    1.000     10.0
0.010    1.000     20.0
0.001    1.000     40.0

0.100    10.00     20.0
0.010    10.00     40.0
0.001    10.00     80.0

0.100    100.0     40.0
0.010    100.0     80.0
0.001    100.0    160.0
如果我使用热图来绘制它,只有当我缩放x值,使其与y值处于相同范围时,它才似乎是正确的

请在下面找到一个示例。只有第二个图给出了热图的正确值(左上角为高值,右下角为低值):

对于非缩放值,如何实现这一点

感谢您的帮助。非常感谢。

给你:

set dgrid3d 20,20
set pm3d explicit
set view map

set table "interpolated_data.dat"

splot 'data.dat' using ($1*1000):2:3

set output 'heatmap.png'
set terminal pngcairo

set multiplot layout 2,1

unset table
unset dgrid3d
set pm3d
unset surface

set xlabel 'scaled by factor 1000'
splot 'interpolated_data.dat' u 1:2:3

set xlabel 'unscaled'
splot 'interpolated_data.dat' u ($1/1000):2:3

比例图看起来正确,但我不确定它是否真的正确。至少在左下角似乎有一个伪影,一个可能不应该存在的局部最大值。如果删除
set view map
,您可以更好地查看它:

我认为原因在于
dgrid3d
。它会对相邻点进行一些奇特的加权,这可能会导致意外的结果

我的建议是通过删除
set dgrid3d 20,20
和使用
set pm3d interpolate 20,20
来使用线性插值。这给出了以下图片:

最后,您的数据要求至少尝试对数比例图:

最后一个情节的剧本如下。和你的相比没什么特别的。我必须为未缩放的绘图指定xrange,因为有4个绘图,所以它更长

reset
set terminal png size 1200,800
set output "data_log.png"

set logscale x
set logscale y

set multiplot layout 2,2 title "With \"interpolate\" and logscale"

set pm3d at s interpolate 20,20
set hidden3d

set xlabel 'unscaled'
set origin 0.5,0.5
set xrange [0.001:0.1]
splot 'data.dat' u 1:2:3 notitle
set autoscale x

set xlabel 'scaled by factor 1000'
set origin 0.5,0.0
splot 'data.dat' u ($1*1000):2:3 notitle

set view map

set xlabel 'unscaled'
set origin 0.0,0.5
set xrange [0.001:0.1]
splot 'data.dat' u 1:2:3 notitle
set autoscale x

set xlabel 'scaled by factor 1000'
set origin 0.0,0.0
splot 'data.dat' u ($1*1000):2:3 notitle

unset multiplot
set output

不客气。如果答案解决了您的问题,请随时接受。此外:
set dgrid3d 20,20
相当于
set dgrid3d 20,20 qnorm
。参数
qnorm
通过系数
(dx^2+dy^2)^norm/2对生成的网格上的所有点进行加权,如果x和y比例非常不同,这可能不是我们所期望的。@Christoph。有见地的评论,谢谢。你看了吗?
reset
set terminal png size 1200,800
set output "data_log.png"

set logscale x
set logscale y

set multiplot layout 2,2 title "With \"interpolate\" and logscale"

set pm3d at s interpolate 20,20
set hidden3d

set xlabel 'unscaled'
set origin 0.5,0.5
set xrange [0.001:0.1]
splot 'data.dat' u 1:2:3 notitle
set autoscale x

set xlabel 'scaled by factor 1000'
set origin 0.5,0.0
splot 'data.dat' u ($1*1000):2:3 notitle

set view map

set xlabel 'unscaled'
set origin 0.0,0.5
set xrange [0.001:0.1]
splot 'data.dat' u 1:2:3 notitle
set autoscale x

set xlabel 'scaled by factor 1000'
set origin 0.0,0.0
splot 'data.dat' u ($1*1000):2:3 notitle

unset multiplot
set output