Gnuplot - 在init

时间:2017-12-13 10:29:29

标签: gnuplot

我正在寻找一种方法来将自定义命令加载到我的gnuplot会话中。经常在玩一个情节之后我想把它输出到PDF,然后继续工作。这看起来像是:

set terminal pdf
set output   'somefilename.pdf'
replot
set terminal qt
replot

目前我能做的最好的事情就是把它放在一个单独的文件中,文件名是变量而不是字符串,在我的会话中定义所述变量,然后加载所述文件。我想知道我是否可以将此脚本作为带参数的命令加载,所以我可以做类似的事情

exportpdf "myfile.pdf"

2 个答案:

答案 0 :(得分:2)

我认为你现在的方法已经相当不错了,但是如果你想要的话你可以稍微调整一下:

  1. 如果您愿意继续将文件名存储在gnuplot变量FILENAME中,那么您可以通过使用宏来避免使用外部文件:

    exportpdf="set term push; set term pdf; set output FILENAME; replot; set output; set term pop"
    

    然后,您可以通过执行

    来保存当前数字
    @exportpdf
    
  2. 如果要将文件名作为参数,可以创建脚本文件exportpdf.gp

    set term push
    set term pdf
    set output ARG1
    replot
    set output
    set term pop
    

    并定义字符串

    exportpdf='call "exportpdf.gp"'
    

    例如在您的启动文件中。然后,您只需执行

    即可将当前数字保存到文件名
    @exportpdf "filename.pdf"
    

答案 1 :(得分:1)

如果要定义自定义&#34;函数&#34;,您可以先构造相应的命令,然后SELECT a.Id, a.AccountId, a.AccountName, SUM(CASE WHEN b.TransDate < c.DateFrom THEN b.Value END) AS FirstVal, SUM(CASE WHEN b.TransDate BETWEEN c.DateFrom AND c.DateTo THEN b.Value END) AS BetweenVal, SUM(CASE WHEN b.TransDate > c.DateTo THEN b.Value END) AS LastVal, FROM dbo.Accounts AS a LEFT OUTER JOIN dbo.AccTransD AS b ON a.AccountId = b.AccountId LEFT OUTER JOIN dbo.AccountsSupport AS c ON TRUE GROUP BY a.Id, a.AccountId, a.AccountName, c.Id ORDER BY a.Id 使用它:

eval

然后可以方便地将此定义放在Gnuplot启动脚本中,以便它自动可用