我在gnuplot会话中调用一个函数,并且想知道范围以及在此函数中是否使用了logscale。怎么做 ? 谢谢
gnuplot> load 'myfunction.gnu'
文件myfunction.gnu
:
if "logscale" {do this};else {do that}
答案 0 :(得分:0)
部分解决方案如下。假设主脚本如下:
set logscale x
set xr [10:100]
load 'my_function.gpl'
然后在my_function.gpl
,你可以这样做:
set terminal push
set terminal unknown
plot 1
isLogScale = (GPVAL_X_LOG > 0)?1:0
xMin = GPVAL_X_MIN
xMax = GPVAL_X_MAX
set terminal pop
if(isLogScale){
print "logscale"
}else{
print "..."
}
这个想法是:
set terminal push
set terminal unknown
GPVAL_X_LOG
检查日志缩放(如果尚未设置logscale
则等于零)并且范围为GPVAL_X_MIN
,GPVAL_X_MAX
。set terminal pop
但问题是,虽然set logscale x
默认设置GPVAL_X_LOG
为10,但unset logscale
不会将其恢复为零,所以如果使用set logscale x;unset logscale
,上面的代码片段无法正确处理...
在我看来,更好的解决方案是在主脚本中引入自定义变量:
useLogScale = 1
if(useLogScale){
set logscale x
}
set xr [10:100]
load 'my_function.gpl'
然后变量useLogScale
也可以直接在my_function.gpl
中使用。