'-'
パイプラインで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`.