2012-06-29 77 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 +延遲=>我將其標記爲連接斷開)

相關問題