Linux

Gnuplot:繪圖’/dev/stdin’和繪圖’-‘有什麼區別?

  • October 1, 2021

當我使用'-'從管道中繪製 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選項,因為後者不允許與繪圖互動(調整大小後沒有更新,無法從工具欄中顯示/隱藏網格等)

👉️ 我使用的是 bash 版本 5.0.17在 Ubuntu 20.04 上,gnuplot 5.2 更新檔級別 8,如果需要該資訊。

'-'被認為是一種特殊情況,在可能的情況下,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`.

引用自:https://unix.stackexchange.com/questions/671446