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