我正在绘制gnuplot中的图形,并希望以全屏和特定大小打开它们.
以前,我一直在多色模式下输出图形并使用重读来更新它们; 因此,当我手动最大化时,绘图会在几次迭代后填满屏幕.现在,我还想将输出保存为文件.当我打开该文件时,它与原始多画面输出的大小相同.但是,当我最大化它时,绘图的大小不会增加以填充屏幕.我有两个问题:
这是我当前的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
Run Code Online (Sandbox Code Playgroud)
我试图键入以下内容:
gnuplot -geometry -3360-1050 gnuplotCode # where my screen size is 3360x1050
Run Code Online (Sandbox Code Playgroud)
和:
resolution=$(xrandr | grep '*') && resolution=${resolution% *}
gnuplot -geometry $resolution gnuplotCode
Run Code Online (Sandbox Code Playgroud)
但这两种方法都不奏效 请问您能告诉我如何以全屏和特定大小打开gnuplots吗?谢谢.
Chr*_*oph 10
您必须基于像素的终端(区分pngcairo,png,canvas(...)和所有交互终端wxt,x11,qt,windows,aqua,这里的大小是在像素给出.对于基于矢量的终端(postscript,svg,postscript等)的尺寸以英寸给出或厘米.
使用该-geometry标志仅适用于x11终端:
gnuplot -geometry 800x800 -persist -e 'set terminal x11; plot x'
Run Code Online (Sandbox Code Playgroud)
对于所有其他基于像素的终端,您可以使用该size选项以像素为单位设置画布大小:
set terminal pngcairo size 800,800
Run Code Online (Sandbox Code Playgroud)
当然,您也可以提取显示器分辨率并将其用作大小.这里有两种变体:
在shell上提取监视器大小:
monitorSize=$(xrandr | awk '/\*/{sub(/x/,",");print $1; exit}')
gnuplot -e "monitorSize='$monitorSize'; load 'gnuplotCode'"
Run Code Online (Sandbox Code Playgroud)
gnuplotCode然后该文件必须使用gnuplot变量monitorSize,如下所示:
set macros
set terminal pngcairo size @monitorSize
set output 'foo.png'
plot x
Run Code Online (Sandbox Code Playgroud)
请注意,字符串变量的内容monitorSize必须用作宏,即在评估整行之前插入值.
如果你不想在shell上有这个额外的行,你也可以xrand通过system函数从gnuplot脚本中调用这些东西.在这种情况下,文件gnuplotCode看起来如下:
monitorSize=system("xrandr | awk '/\*/{sub(/x/,\",\");print $1; exit}'")
set macros
set terminal pngcairo size @monitorSize
set output 'foobar.png'
plot x**2
Run Code Online (Sandbox Code Playgroud)
你只能打电话给gnuplot gnuplotCode.
请注意,shell命令始终只提取第一个监视器的信息.