如何从CLI调用gnuplot并将输出图保存到图像文件?

时间:2012-12-26 22:31:42

标签: gnuplot

我正在编写一个批处理文件,它也会从dat文件中生成一个gnuplot图。

我希望使用我编写的gnuplot“gnu”脚本从命令行调用gnuplot,并将输出图保存到图像中。

类似的东西:

gnuplot.exe script.gnu > image.png

有什么想法吗?

4 个答案:

答案 0 :(得分:10)

您不必将gnuplot的输出重定向到图像文件中;你可以在gnuplot脚本中设置它:

set terminal png
set output 'image.png'

如果你想拥有一个变量输出名称,在bash中这样做的一个简单方法就是包装gnuplot命令:

#!/bin/bash

echo "set terminal png
set output '$1'
plot 'data.dat'" | gnuplot

这样,您可以使用输出文件名的参数运行bash脚本:

./plotscript.sh image.png

答案 1 :(得分:7)

简单地添加以下行将使gnuplot返回png格式的字节码。因此,您可以将输出重定向到png文件。

set terminal png

答案 2 :(得分:2)

当您的批处理文件仅运行gnuplot(使用脚本)并且不执行任何其他操作时, 然后你可以将批处理文件与gnuplot脚本结合起来:

@echo off & call gnuplot -e "echo='#';set macros" "%~f0" & goto :eof

set terminal png
set output 'image.png'
...

使用 .cmd 扩展名保存。
这样做的好处是:

  • 您只有1个文件而不是2个
  • 该文件可从Explorer / TaskScheduler / etc运行。以便携的方式
    (无需将新扩展名与gnuplot.exe相关联)

换句话说,这是Unix的#!/usr/bin/env gnuplot解决方案的Windows“等效”(?) (这就是我在Windows下使用gnuplot脚本时觉得很舒服的原因。) (注意:'call gnuplot'用于允许在PATH中的某个位置使用gnuplot.cmd文件 - 而不是使用gnuplot.exe(以及许多其他程序)的文件夹污染PATH。)

答案 3 :(得分:1)

之前的解决方案无效,您需要实施:

首先:像这样创建script.sh:

!/ bin / sh的

gnuplot<< EOF
设置终端postscript eps颜色增强
设置输出" $ 1.eps" #所需的所有声明
设置xlabel"能量[MeV]"
情节" $ 1.dat"使用1:2 notitle w l
EOF

第二:执行脚本:
$ ./script.sh数据
*参数数据是您将用于图形的.dat文件...

真的有效!