gnuplot:热图的默认值(如果没有可用数据)

gnuplot: default value for heatmap (if no data is available)

你能告诉我如何指定默认的 cb(或 z)值吗?

我构建了一个 3d 图表 {x,y,z} 或 {x,y,cb},但是对于不同的 x 有不同的 y 范围,因此图表上可以看到白色条(对于heatmap/colorbox)。我希望看到没有白色条纹,并且在没有数据的情况下,gnuplot 将替换为默认值(例如 0),并相应地为热图

用适当的颜色绘制字段

您有多种选择,具体取决于您使用的绘图模式和您拥有的数据类型。一般来说,您可以使用颜色分配的两个属性来获得您想要的:

1) 越界值映射到颜色条的极值最小值或最大值的颜色。因此,一种选择是分配一个调色板,该调色板在最小值和最大值处具有您想要的 "default" 颜色,与您在其余范围

中使用的任何调色板功能无关

2) "missing" 或 "not-a-number" 的数据值通常会在像素图像或热图的网格中留下一个孔,让背景颜色显示出来。

标准演示集中有一个演示 imageNaN.dem,展示了如何将这些功能用于多个 2D 和 3D 热图命令。 splot $matrixdata matrix with image 生成的热图的输出显示 below.You 可以看到固定到颜色栏范围 min/max 的极值。

请注意,如果您想要显示背景以外的其他颜色,您可以在热图表面后面放置一个彩色矩形。

# Define the test data as a named data block
$matrixdata << EOD
0    5 4 3  0
?    2 2 0  1
Junk 1 2 3  5
NaN  0 0 3  0
Inf  3 2 0  3
-Inf 0 1 2  3
EOD

set view map
set datafile missing '?'
unset xtics
set ytics   ("0" 0.0, "?" 1.0, "Junk" 2.0, "NaN" 3.0, "Inf" 4.0, "-Inf" 5.0)

set cblabel "Score" 
set cbrange [ -2.0 : 7.0 ]

splot $matrixdata matrix using 1:2:(0):3 with image

@Ethan,我真的没有一些数据,导致出现白色裂缝。

我可以在形成数据文件的阶段填入缺失的数据0,但是后来有些文件变得非常大,gnuplot占用了所有的内存。

所以我正在寻找解决问题的方法。

我的例子:

对于@Ethan:我的代码:

            set arrow from 0,86400 rto graph 1, graph 0 nohead ls 5 front

#===> decision of problem
            set object rectangle from graph 0, graph 0 to graph 1, graph 1 behind fc rgbcolor 'blue' fs noborder

            set pm3d map
#           set pm3d interpolate 32,32
            set size square
            set palette rgbformulae 22,13,-31

            splot inputFullPath u 2:1:(percentage()) notitle

和我的数据(例如):

0 1 0.1
0 2 0.2
0 4 0.5
# -------- {0,5..7} - white gap

# -------- {1,1..3} - white gap
1 3 0.6
1 4 0.5
1 7 0.9