2012-06-29 75 views
9

如何限制gnuplot的自动缩放,以至于y-max为例,它至少是某个值,它会自动缩放到固定的“极限”?Gnuplot自动缩放的最小和最大边界

从查看文档,我只看到如何修复轴的最小值或最大值,而另一个自动缩放。

About autoscaling on PDF page 93

+0

你能说清楚自动缩放是什么意思吗?您是否想将ymax设置为某个值,或者您是否想要调整数据以使其最大值具有某个值? – andyras

+0

@andyras ymax的示例:ymax的最小值可以是100,最大值是1000.如果最高数据点是50,那么ymax将是100.它将自动调整为最大值为1000的值。之后,值将被切除。 – varesa

回答

18

自4.6版以来,gnuplot提供了一种新的语法来指定自动缩放的上限和下限。对于你的情况下,你可以使用

set xrange [0:100 < * < 1000] 

从文档引用:

在正在执行自动缩放可以通过下界<lb>或上限<ub>或两者被限制的范围内。语法是

{ <lb> < } * { < <ub> } 

例如

0 < * < 200 

<lb> = 0<ub> = 200

该语法可应用于最小值或最大值set *range

自动伸缩xmin但保持其积极的,使用

set xrange [0<*:] 

自动伸缩x,但保持10〜50最小范围:

set xrange [*<10:50<*] 

参见文档有关set xrange以获取更多信息。

4

我不认为这是可能的,要么你有自动缩放的NO-,MIN-或MAX-,或两者轴即:

set yrange [FIXED_MIN : FIXED_MAX] 
set yrange [  * : FIXED_MAX] 
set yrange [FIXED_MIN :   *] 
set yrange [  * :   ] 

分别。

+0

所以它看起来确实是这样,而不是我能够找到它。似乎我必须使用数据手动缩放 – varesa

4

在这种情况下,您可以过滤数据,让gnuplot的做到这一点是正常的自动缩放:

set yrange [*:*] 
plot 'mydatafile' u 1:(($2 >= YMIN && $2 <= YMAX) ? $2 : 1/0) 
+0

这几乎是我所做的(但在gnuplot之外)。对不起,如果我读错了代码,但是遗漏了YMIN以下的每个值?你可能会误解我想要的东西(例如Ymin = 0,Ymax = 100-1000)。我通过添加单点数据来解决这个问题,并在YMIN处添加背景颜色(因此它是不可见的)。这给了我想要的效果。 – varesa

+1

@varesa - 如果你使用的是gnuplot 4.6,还有'stats'命令,你可以将上面的过滤器和gnuplot定义的变量配对:'GPVAL_YMIN'和'GPVAL_XMIN',但现在我们开始稍微复杂一点。然而,“看不见”的观点却是一个有趣的想法 - 我喜欢它。 – mgilson

+0

@mgilson Gnuplot 4.6在自动缩放中添加了这样的上下限的新语法,如'set xrange [0:100 <* <1000]'。 – Christoph

1

由于人们似乎有意在这个问题上,我将添加我解决了这个结合的方式一个答案:

我通过在数据的开头插入一个不可见标记来使自动缩放的最小值。这导致情节总是“展示”它,即使它不能被看见。

然后我在一个解析器脚本中实现了gnuplot的最大外部(也可能在它内部可能,看看mgilson的答案),我已经用它来准备gnuplot的数据。

实际上,在脚本中,我将所有“剪切”值添加到y = 0,并将它们设为红色。这样我就会得到一个“警告”,值太大而不适合绘制。 (我的程序监视两个主机之间的ping,并且没有意义尝试绘制5s +延迟=>我将其标记为连接断开)

相关问题