'-'
파이프라인에서 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`.