web-dev-qa-db-ja.com

自動スケーリングのgnuplotの最小境界と最大境界

Gnuplotの自動スケーリングを制限して、y-maxの例として、少なくとも特定の値になり、固定の「制限」まで自動スケールするようにするにはどうすればよいですか?

ドキュメントを見ると、軸の最小端または最大端を修正する方法しかわかりませんが、もう一方は自動的にスケーリングされています。

PDF 93ページ)の自動スケーリングについて

13
varesa

バージョン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に関するドキュメントを参照してください。

19
Christoph

この場合、データをフィルタリングして、gnuplotに通常の自動スケーリングを実行させることができます。

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

人々はこの質問に興味を持っているようですので、私がこれを解決した方法を答えとして追加します:

データの先頭に非表示のマーカーを挿入して、自動スケーリングを最小限に抑えました。そのため、プロットは、蜂が見えなくても、常に「表示」されます。

次に、gnuplotのデータを準備するために使用したパーサースクリプトで、gnuplotの外部で最大値を実装しました(おそらく、内部でも可能でした。mgilsonの回答を見てください)。

実際、スクリプトでは、すべての「切り取られた」値を取得し、それらをy = 0に追加して、赤にしました。そうすれば、値が大きすぎてグラフ化できないという「警告」が表示されます。 (私のプログラムは2つのホスト間のpingを監視しており、5秒以上の遅延をグラフ化しようとしても意味がありません=>接続が切断されているとマークします)

1
varesa