如何在全屏和特定大小打开gnuplot?

时间:2014-08-20 15:45:10

标签: output gnuplot

我正在绘制gnuplot中的图表,并希望以全屏和特定大小打开它们。

以前,我一直在多色模式下输出图形并使用重读来更新它们;因此,当我手动最大化时,绘图会在几次迭代后填满屏幕。现在,我还想将输出保存为文件。当我打开该文件时,它与原始多画面输出的大小相同。但是,当我最大化它时,绘图的大小不会增加以填充屏幕。我有两个问题:

  1. 如何全屏打开多重文件?
  2. 如何将输出文件设为特定大小?
  3. 这是我当前的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吗?谢谢。

1 个答案:

答案 0 :(得分:9)

您必须区分基于像素的终端(pngcairopngcanvas(...)和所有互动终端wxtx11qtwindowsaqua,其中大小以像素为单位。对于基于矢量的终端(postscriptsvgpostscript等)尺寸以英寸或厘米为单位。

使用-geometry标志仅适用于x11终端:

gnuplot -geometry 800x800 -persist -e 'set terminal x11; plot x'

对于所有其他基于像素的终端,您可以使用size选项以像素为单位设置画布大小:

set terminal pngcairo size 800,800

当然,您也可以提取显示器分辨率并将其用作大小。这里有两种变体:

  1. 在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的内容必须用作宏,即在评估整行之前插入值。

  2. 如果您不希望在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拨打电话。

  3. 请注意,shell命令始终只提取第一个监视器的信息。