首页 > 解决方案 > gnuplot:热图的默认值(如果没有可用数据)

问题描述

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

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

标签: graph3dgnuplotheatmapdefault-value

解决方案


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

1) 越界值被映射到颜色条的极小值或极大值的颜色。因此,一种选择是分配一个调色板,该调色板在最小值和最大值处具有您想要的“默认”颜色,而与您在该范围的其余部分使用的任何调色板功能无关

2)“缺失”或“非数字”的数据值通常会在像素图像或热图的网格中留下一个洞,让背景颜色显示出来。

标准演示集中有一个演示imageNaN.dem,显示了这些功能在几个 2D 和 3D 热图命令中的使用。生成的热图的输出splot $matrixdata matrix with image如下所示。您可以看到固定到颜色条范围的最小值/最大值的极值。

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

# 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

在此处输入图像描述


推荐阅读