Solución:
No tiene que redirigir la salida de gnuplot a un archivo de imagen; puede configurar eso dentro del propio script gnuplot:
set terminal png
set output 'image.png'
Si desea tener un nombre de salida variable, una forma sencilla de hacerlo en bash es ajustar los comandos de gnuplot de esta manera:
#!/bin/bash
echo "set terminal png
set output '$1'
plot 'data.dat'" | gnuplot
De esta forma puede ejecutar el script bash con un argumento para el nombre del archivo de salida:
./plotscript.sh image.png
Simplemente poniendo la siguiente línea hará que gnuplot devuelva el código de bytes en formato png. Por lo tanto, puede redirigir la salida a un archivo png.
set terminal png
Cuando su archivo por lotes se ejecuta solo en gnuplot (con el script) y no hace nada más, puede combinar el archivo por lotes con el script de gnuplot:
@echo off & call gnuplot -e "echo='#';set macros" "%~f0" & goto :eof
set terminal png
set output 'image.png'
...
Guarda esto con .cmd extensión.
Las ventajas de esto es que:
- solo tiene 1 archivo en lugar de dos
- ese archivo se puede ejecutar desde Explorer / TaskScheduler / etc. de forma portátil
(no es necesario asociar una nueva extensión con gnuplot.exe)
En otras palabras, este es el “equivalente” de Windows (?) Del #!/usr/bin/env gnuplot
solución de Unix
(por eso me resulta tan cómodo trabajar con scripts de gnuplot en Windows).
(Nota: ‘llamar a gnuplot’ se usa para permitir un archivo gnuplot.cmd en algún lugar de la RUTA, en lugar de contaminar la RUTA con la carpeta gnuplot.exe (y muchos otros programas)).