Gnuplot: "/dev/stdin" フローティングと "-" フローティングの違いは何ですか?

Gnuplot:

'-'パイプラインでgnuplotを使用してプロットすると、次のようになります⭐

$ seq 5 | gnuplot -e "plot '-' w lp; pause 99"

うまく機能し、プロットウィンドウのサイズを変更し、問題なくグリッドを表示または非表示にできます。

'/dev/stdin'しかし、以下のように使用するとき:

$ seq 5 | gnuplot -e "plot '/dev/stdin' w lp; pause 99"

プロットが表示されますが、ウィンドウを最大化するためにクリックすると競合が発生します。

line 0: warning: Skipping data file with no valid points

plot '/dev/stdin' w lp
                      ^
line 0: x range is invalid

なぜこれが起こるのかを説明できますか?'-'これらとの違いは何ですか'/dev/stdin'


⭐後者がプロットとの対話を許可しないため、オプションを使用するpause代わりに意図的に使用しました(サイズ調整後の更新なし、ツールバーでグリッドを表示/非表示にする方法がないなど)。-p

ベストアンサー1

'-'これは特殊なケースと見なされ、可能であればrefreshコマンドが一部に置き換えられます。replotこれは、プログラムが以前のソースからデータを再読み込みしようとするのではなく、以前に読み取ったデータを再利用することを意味します。また、これは'-'必ずしも標準入力ではなく「現在の入力ストリーム」を意味する。

'/dev/stdin'一方、gnuplotは通常のファイル名のように見えるため、「replot」コマンドは再度読み取ろうとします。これは、同じデータを2番目に入力する場合にのみ機能します。対話型セッションでは、プログラムはこれを行うように求められます。

あなたと他の人がこのパターンでさまざまな振る舞いをする理由については、-persistあなたが試してみた方法の詳細を知る必要があります。他の端末は永続モードを異なる方法で実装することに注意してください。ドキュメントから:

Depending on the terminal type, some mousing operations may still be possible
in the persistent window.  However operations like zoom/unzoom  that require
redrawing the plot are not possible because the main program has exited.
If you want to leave a plot window open and fully mouseable after creating
the plot, for example when running gnuplot from a script file rather than
interactively, see `pause mouse close`.

おすすめ記事