gnuplot "matrix with image" 具有特定值的固定颜色

gnuplot "matrix with image" with a fixed colour for a certain value

使用 gnuplot,我使用以下命令绘制存储在文件中的矩阵:

set title "Matrix"
set xrange[-0.5:9.5]
set yrange[9.5:-0.5]
set pm3d map
unset key
unset surface
set term postscript eps enhanced color
set out "matrix.eps"
set palette defined (-1 "#A52A2A", 0 "white", 1 "green" )
splot "matcorrel" matrix with image

矩阵有正值和负值,我想将零值始终置于白色,正值置于调色板的绿色区域,负值置于棕色。正值大于负值,因此 gnuplot 不会将零置于白色。

我试过 set cbrange 但我只能修改极端颜色,无法修复中心颜色。

有什么想法吗?非常感谢您

Gnuplot 无法围绕某个值对称地自动缩放。你必须使用例如stats 自己确定cbrange:

set autoscale xfix
set autoscale yfix
unset key

set term postscript eps enhanced color
set out "matrix.eps"

stats "matcorrel" matrix using 3 nooutput
cbmax = (abs(STATS_min) > abs(STATS_max) ? abs(STATS_min) : abs(STATS_max))
set cbrange [-cbmax:cbmax]
set palette defined (-1 "#A52A2A", 0 "white", 1 "green" )

plot "matcorrel" matrix with image

如果您想对正值和负值使用不同的限制,但将零保留为白色,您可以使用

stats "matcorrel" matrix using 3 nooutput
set cbrange [STATS_min:STATS_max]
set palette defined (STATS_min "#A52A2A", 0 "white", STATS_max "green" )

请注意,如果您绘制 with image,则不需要使用 pm3d。由于您正在绘制热图,因此可以直接使用 plot