2013-05-21 115 views
1

我想用gnuplot绘制一个轮廓图,我想指出一些特殊颜色的特殊特征。gnuplot中的对称轴

我通过

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

这导致在具有与从红色到白色的渐变蓝色的小区域颜色梯度定义轮廓图和剩余部分为红色负数和蓝色为正数字。

我现在的问题是,我想将gnuplot自动设置为z轴的对称缩放比例。但是,通过指定splot [][][-200:200] 'data' u 1:2:3和具有来自例如-300到100 gnuplot会自动重新调整为[-200:100],这会导致我的色阶错位(白色区域现在约为-50)。

有没有办法强制一个zrange或得到一个自动对称的缩放轴?

回答

3

我不知道我理解的问题,但你有没有考虑:

set cbrange [-200:200] 

从文档:

的`设置cbrange `命令设置值范围,这些值的颜色范围是使用 当前的`调色板`按样式`使用pm3d`,`使用图像`和使用调色板。 颜色范围外的值使用最接近的极端的颜色。

+0

这正是我需要的。谢谢! – Stefan

1

要强制z范围,你的绘图命令之前尝试

set zr [-200:200] 

。要自动缩放轴,你可以使用stats来做点什么。主要技巧是要记住,颜色栏是相对单位。像这样(未经):

datafile = 'data.dat' 

stats datafile u 3 nooutput 

# assume you want some data positive and some negative 
if (stats_max*stats_min > 0) { 
print 'WARNING: all data has same sign. Color bars may be weird.' 
} 

z0 = -1*min(abs(0.1*stats_min),abs(0.1*stats_max)) 
z1 = 0.0 
z2 = -1*z0 

set palette defined (stats_min "red", z0 "red", z1 "white", 
        z2 "blue", stats_max "blue") 
+0

命令'set zr [-200:200]'不起作用。你可以用'set pm3d map'然后'splot [-10:10] [ - 10:10] [] 5 + 10 * sin(x)'来试试。这总是会导致从-6到16的范围。另一种方法看起来非常有前景。我会在稍后尝试。 – Stefan