1

我正在使用 gnuplot 使用以下命令绘制矩阵:

ub = 1
lb = -ub
set cbrange [lb:ub]
set palette defined (lb "red", 0 "white", ub "blue)
plot 'mydata.dat' matrix ind 19 with image

这给了我一个看起来很棒的矩阵。但我还想要一个仅包含域 (0.8:1) 和 (-1:-0.8) 中具有值的点的图形。我想我可能可以更改 cbrange 或更改调色板定义。但我不知道怎么做。谁能告诉我怎么做(无论哪种方式)?谢谢。

4

1 回答 1

1

一般来说,给定的数值set palette defined不定义绝对值,而是仅用于梯度计算并映射[0, 1]. 这意味着例如

set palette defined (-1 "red", 0 "white", 1 "blue")

set palette defined (100 "red", 200 "white", 300 "blue")

是完全等价的。然后将选择的范围set cbrange映射到这个单位区间。

因此,要仅显示 range [0.8:1],在完整图中都以相同的蓝色阴影显示,您可以检查并限制第三个颜色列的值:

set palette defined (-1 "red", 0 "white", 1 "blue)
ub = 1
lb = -ub
set cbrange [lb:ub]
plot 'mydata.dat' matrix using 1:2:($3 >= 0.8*ub ? $3 : 0) ind 19 with image

这会将所有值设置为低于0.8*ubto ,并仅以蓝色0显示上述值。0.8*up

如果您将颜色范围设置为[0.8:1],则值0.8将显示为红色和1蓝色。

因此,要仅显示范围[-1:-0.8],请使用

plot 'mydata.dat' matrix using 1:2:($3 <= 0.8*lb ? $3 : 0) ind 19 with image
于 2014-02-10T16:00:48.480 回答