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