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`.

相关内容