读取访问gnuplot样本设置以进行进一步计算

时间:2017-12-01 09:42:43

标签: gnuplot

我在以下几乎最小的例子中为各种函数和x和y范围打印强制字段,如f

f(x,y) = -x*y

unset key
set xrange [-2:2]
set yrange [-1:1]
set samples 40
set isosamples 20

delta = 2.0 / 41
ds(x,y) = sqrt(1.0+f(x,y)**2)

plot "++" using ($1):($2):(delta/ds($1,$2)):(delta*f($1,$2)/ds($1,$2)) with vectors

如何计算delta内部设置的当前值,例如samplesisosamples以及x和y范围,以便调整小箭头的长度他们的相互距离使得箭头可见但不重叠?

背景是我想将上面的代码分成两个文件,第一个是定义f和范围和样本设置,然后是load其余的。其余部分可以重复用于绘制许多函数的力场。

可以通过定义变量来绕过对gnuplot设置的读访问,然后根据这些来设置xrange和yrange等。但是,如果可能,我会更喜欢使用gnuplot内置set命令。

我知道在第一次调用绘图后,有GPVAL_X_MINGPVAL_X_MAXGPVAL_Y_MINGPVAL_Y_MAX变量。最好不要求绘图,只读取前面set xrangeset yrange的设置。

是否有任何gnuplot定义的变量用于样本和isosamples?有GPVAL_SAMPLESGPVAL_ISOSAMPLES吗?

1 个答案:

答案 0 :(得分:0)

作为一种肮脏的解决方案,您可以生成辅助空图以初始化这些变量:

set terminal pngcairo enhanced
set output 'fig.png'

set xr [-2:2]
set yr [-4:4]

set multiplot
plot 1/0 t ''

print GPVAL_X_MIN, GPVAL_X_MAX

plot sin(x) w l

但是,在评论中使用@Christoph建议的方法似乎更加一致,即声明自定义变量并在范围和其他设置的定义中使用它...