7

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

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

就像是:

gnuplot.exe script.gnu > image.png

有任何想法吗?

4

4 回答 4

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
于 2012-12-27T04:34:32.787 回答
8

只需输入以下行将使 gnuplot 返回 png 格式的字节码。因此,您可以将输出重定向到 png 文件。

set terminal png
于 2012-12-27T07:15:53.827 回答
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 关联)

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

于 2013-09-19T09:08:25.750 回答
1

之前的解决方案都行不通,需要实现:

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

#!/bin/sh  
gnuplot << EOF  
set terminal postscript eps color enhanced  
set output "$1.eps" # all the declarations that you need  
set xlabel "Energy [MeV]"  
plot "$1.dat" using 1:2 notitle w l  
EOF  

二:执行脚本:

$ ./script.sh data  

参数数据是您将用于绘制图形的 .dat 文件...

真的行!

于 2016-06-12T22:53:04.390 回答