Gnuplotの自動スケーリングを制限して、y-maxの例として、少なくとも特定の値になり、固定の「制限」まで自動スケールするようにするにはどうすればよいですか?
ドキュメントを見ると、軸の最小端または最大端を修正する方法しかわかりませんが、もう一方は自動的にスケーリングされています。
バージョン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
に関するドキュメントを参照してください。
この場合、データをフィルタリングして、gnuplotに通常の自動スケーリングを実行させることができます。
set yrange [*:*]
plot 'mydatafile' u 1:(($2 >= YMIN && $2 <= YMAX) ? $2 : 1/0)
人々はこの質問に興味を持っているようですので、私がこれを解決した方法を答えとして追加します:
データの先頭に非表示のマーカーを挿入して、自動スケーリングを最小限に抑えました。そのため、プロットは、蜂が見えなくても、常に「表示」されます。
次に、gnuplotのデータを準備するために使用したパーサースクリプトで、gnuplotの外部で最大値を実装しました(おそらく、内部でも可能でした。mgilsonの回答を見てください)。
実際、スクリプトでは、すべての「切り取られた」値を取得し、それらをy = 0に追加して、赤にしました。そうすれば、値が大きすぎてグラフ化できないという「警告」が表示されます。 (私のプログラムは2つのホスト間のpingを監視しており、5秒以上の遅延をグラフ化しようとしても意味がありません=>接続が切断されているとマークします)