2014-02-09 133 views
1

我使用的gnuplot绘制一个矩阵用下面的命令:GNUPLOT cbrange设置

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或改变调色板的定义。但我不知道如何。 任何人都可以告诉我怎么做(无论哪种方式)? 谢谢。

+0

应该超出范围的点发生什么事? – Christoph

+0

将它们替换为0. – FortCpp

回答

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选择的范围映射到该统一间隔。

所以,只显示在相同的蓝色阴影的完整的情节一样,可以检查和限制第三,色列的值范围​​,所有:

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*ub的值设置为0,并仅显示蓝色以上的值0.8*up

如果要将颜色范围设置为​​,则值0.8将显示为红色,而1将显示为蓝色。

因此,只显示范围[-1:-0.8],使用

plot 'mydata.dat' matrix using 1:2:($3 <= 0.8*lb ? $3 : 0) ind 19 with image 
+0

很棒!感谢设置调色板的细节,并告诉我矩阵绘图的隐藏索引。 – FortCpp

+0

这就是我的做法:使用1:2绘制'mydata.dat'矩阵:(($ 3> cutoff || $ 3 <-cutoff)?$ 3:0)ind 19 with image – FortCpp