我正在绘制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
我尝试输入以下内容:
gnuplot -geometry -3360-1050 gnuplotCode # where my screen size is 3360x1050
和
resolution=$(xrandr | grep '*') && resolution=${resolution% *}
gnuplot -geometry $resolution gnuplotCode
但这两种方法都不奏效。请问您能告诉我如何以全屏和特定大小打开gnuplots吗?谢谢。
答案 0 :(得分:9)
您必须区分基于像素的终端(pngcairo
,png
,canvas
(...)和所有互动终端wxt
,x11
, qt
,windows
,aqua
,其中大小以像素为单位。对于基于矢量的终端(postscript
,svg
,postscript
等)尺寸以英寸或厘米为单位。
使用-geometry
标志仅适用于x11
终端:
gnuplot -geometry 800x800 -persist -e 'set terminal x11; plot x'
对于所有其他基于像素的终端,您可以使用size
选项以像素为单位设置画布大小:
set terminal pngcairo size 800,800
当然,您也可以提取显示器分辨率并将其用作大小。这里有两种变体:
在shell上提取显示器大小:
monitorSize=$(xrandr | awk '/\*/{sub(/x/,",");print $1; exit}')
gnuplot -e "monitorSize='$monitorSize'; load 'gnuplotCode'"
然后文件gnuplotCode
必须使用gnuplot变量monitorSize
,如下所示:
set macros
set terminal pngcairo size @monitorSize
set output 'foo.png'
plot x
请注意,字符串变量monitorSize
的内容必须用作宏,即在评估整行之前插入值。
如果您不希望在shell上添加其他行,您还可以通过xrand
函数从gnuplot脚本中调用system
内容。在这种情况下,文件gnuplotCode
将如下所示:
monitorSize=system("xrandr | awk '/\*/{sub(/x/,\",\");print $1; exit}'")
set macros
set terminal pngcairo size @monitorSize
set output 'foobar.png'
plot x**2
您只能使用gnuplot gnuplotCode
拨打电话。
请注意,shell命令始终只提取第一个监视器的信息。