我正在 gnuplot 中绘制图形,并希望以全屏和特定大小打开它们。
以前,我一直在多图模式下输出图形并使用 reread 更新它们;因此,当我手动最大化它时,经过几次迭代后,这些图会填满屏幕。现在,我还想将输出保存为文件。当我打开该文件时,它与原始多图输出的大小相同。但是,当我最大化它时,绘图的大小不会增加以填满屏幕。我有两个问题:
这是我当前的 gnuplot 代码(在一个名为 gnuplotCode 的文件中):
set terminal pngcairo dashed enhanced
set output 'foo.png'
set multiplot layout 3, 3
plot for [iter=1:9] path/to/file using 1:(column(iter)) notitle
unset multiplot
unset output
pause 10
reread
我尝试输入以下内容:
gnuplot -geometry -3360-1050 gnuplotCode # where my screen size is 3360x1050
和:
resolution=$(xrandr | grep '*') && resolution=${resolution% *}
gnuplot -geometry $resolution gnuplotCode
但两种方法都不起作用。请您告诉我如何以全屏和特定尺寸打开 gnuplots?谢谢。
最佳答案
您必须区分基于像素的终端( pngcairo
、 png
、 canvas
(...) 和所有交互式终端 wxt
、 x11
、 qt
、 |7 , |1914| 、 |7 , |104| 4 |尺寸以像素为单位。对于基于矢量的终端( windows
、 aqua
、 postscript
等),尺寸以英寸或厘米为单位。
使用 svg
标志仅适用于 postscript
终端:
gnuplot -geometry 800x800 -persist -e 'set terminal x11; plot x'
对于所有其他基于像素的终端,您可以使用
-geometry
以像素为单位设置 Canvas 大小的选项:set terminal pngcairo size 800,800
当然,您也可以提取显示器分辨率并将其用作大小。这里有两种变体:
monitorSize=$(xrandr | awk '/\*/{sub(/x/,",");print $1; exit}')
gnuplot -e "monitorSize='$monitorSize'; load 'gnuplotCode'"
文件
x11
然后必须使用 gnuplot 变量 size
如下:set macros
set terminal pngcairo size @monitorSize
set output 'foo.png'
plot x
注意,字符串变量
gnuplotCode
的内容必须用作宏,即在评估整行之前插入值。 monitorSize
gnuplot 脚本中的内容通过 monitorSize
功能。在这种情况下,文件 xrand
如下所示:monitorSize=system("xrandr | awk '/\*/{sub(/x/,\",\");print $1; exit}'")
set macros
set terminal pngcairo size @monitorSize
set output 'foobar.png'
plot x**2
您只能使用
system
调用它. 请注意,shell 命令 as 始终仅提取第一个监视器的信息。
关于output - 如何以全屏和特定大小打开 gnuplot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25409071/