我在以下几乎最小的例子中为各种函数和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
内部设置的当前值,例如samples
和isosamples
以及x和y范围,以便调整小箭头的长度他们的相互距离使得箭头可见但不重叠?
背景是我想将上面的代码分成两个文件,第一个是定义f和范围和样本设置,然后是load
其余的。其余部分可以重复用于绘制许多函数的力场。
可以通过定义变量来绕过对gnuplot设置的读访问,然后根据这些来设置xrange和yrange等。但是,如果可能,我会更喜欢使用gnuplot内置set
命令。
我知道在第一次调用绘图后,有GPVAL_X_MIN
,GPVAL_X_MAX
,GPVAL_Y_MIN
和GPVAL_Y_MAX
变量。最好不要求绘图,只读取前面set xrange
和set yrange
的设置。
是否有任何gnuplot定义的变量用于样本和isosamples?有GPVAL_SAMPLES
和GPVAL_ISOSAMPLES
吗?
答案 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建议的方法似乎更加一致,即声明自定义变量并在范围和其他设置的定义中使用它...