Graph 三元运算符和图位置说明符 是否有任何方法可以使用图形位置说明符指定Y范围?

Graph 三元运算符和图位置说明符 是否有任何方法可以使用图形位置说明符指定Y范围?,graph,gnuplot,ternary-operator,Graph,Gnuplot,Ternary Operator,我想在画布的特定区域内绘制一个函数。我有xrange的绝对值,但对于yrange,我希望它从图0.7开始,y1/0仅适用于数据点。为此,您可以使用特殊的数据文件“+”,最终与绘制函数相同,其中gnuplot以离散的间隔对函数进行采样: set xrange [-2*pi:2*pi] plot "+" u ($1):($1 > -pi && $1 < pi ? sin($1) : 1/0) w l 设置xrange[-2*pi:2*pi] 绘图“+”u($1):($1

我想在画布的特定区域内绘制一个函数。我有xrange的绝对值,但对于yrange,我希望它从图0.7开始,y
1/0
仅适用于数据点。为此,您可以使用特殊的数据文件
“+”
,最终与绘制函数相同,其中gnuplot以离散的间隔对函数进行采样:

set xrange [-2*pi:2*pi]
plot "+" u ($1):($1 > -pi && $1 < pi ? sin($1) : 1/0) w l
设置xrange[-2*pi:2*pi]
绘图“+”u($1):($1>-pi&$1

对于绘图内部使用的坐标,不能直接使用
图形。这仅适用于标签、对象和箭头。Gnuplot在整个x范围内评估函数,然后确定自动y范围。因此,在计算函数时,您无法访问自动计算的y范围

以下是如何通过其他方式实现这一目标

首先,使用
unknown
终端绘制完整的函数。这将确定用于完整功能的y范围。这些值存储在变量
GPVAL\u Y\u MIN
GPVAL\u Y\u MAX
中。现在,您可以使用以下值作为约束来重新生成函数:

set terminal unknown
f(x) = sin(x)
set xrange [0:10]
plot f(x)

set terminal pngcairo size 600,300 lw 2
unset key
set output 'test.png'
set samples 1000
graph_y = GPVAL_Y_MAX - GPVAL_Y_MIN
y0 = GPVAL_Y_MIN
set yrange[y0 : y0 + graph_y]
plot (y = f(x), (y < y0 + 0.7*graph_y || y > y0 + 0.8*graph_y) ? 1/0 : y)
设置终端未知
f(x)=sin(x)
设置xrange[0:10]
图f(x)
设置端子pngcairo尺寸600300 lw 2
取消设置键
设置输出“test.png”
设置样本1000个
图形_y=GPVAL_y_MAX-GPVAL_y_MIN
y0=GPVAL\u Y\u MIN
设置y范围[y0:y0+图形_y]
图(y=f(x),(yy0+0.8*图y)?1/0:y)

这很有趣。。。如果它不是一个绘图,而是一个splot呢?@larra您也可以使用特殊文件,在这种情况下,
“++”
splot
一起使用。现在,对于x,您不仅使用了
$1
,对于y,您还使用了
$2
。只需记住设置
xrange
yrange
@Larara是的,它非常方便:-)
set terminal unknown
f(x) = sin(x)
set xrange [0:10]
plot f(x)

set terminal pngcairo size 600,300 lw 2
unset key
set output 'test.png'
set samples 1000
graph_y = GPVAL_Y_MAX - GPVAL_Y_MIN
y0 = GPVAL_Y_MIN
set yrange[y0 : y0 + graph_y]
plot (y = f(x), (y < y0 + 0.7*graph_y || y > y0 + 0.8*graph_y) ? 1/0 : y)