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
你能告诉我如何指定默认的 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