Gnuplot: "/dev/stdin" 플로팅과 "-" 플로팅의 차이점은 무엇입니까?

Gnuplot: "/dev/stdin" 플로팅과 "-" 플로팅의 차이점은 무엇입니까?

'-'파이프라인에서 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" 명령이 다시 읽으려고 시도합니다. 이는 동일한 데이터를 두 번째로 입력하는 경우에만 작동합니다. 대화형 세션에서 프로그램은 이를 수행하라는 메시지를 표시합니다.

귀하와 다른 사람들이 이 패턴에서 다른 동작을 보이는 이유에 대해서는 -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`.

관련 정보