use strict;
use warnings;
use 5.014;
open my $PROGRAM, '|-', 'gnuplot'
or die "Couldn't pipe to gnuplot: $!";
say {$PROGRAM} 'set terminal postscript';
say {$PROGRAM} "set output 'plot.ps'";
say {$PROGRAM} "plot 'mydata.dat' using 1:2 title 'Column'";
close $PROGRAM;
Команда:
set terminal postscript
устанавливает GNUPLOT производить постскриптума выход. Чтобы увидеть список возможных типов форматов вывода:
gnuplot> set terminal
Команда:
set output 'plot.ps'
направляет вывод в файл plot.ps.
Команда:
plot 'mydata.dat' using 1:2 title 'Column'
читает некоторые данные из файла mydata.dat
и участки его.
Для ввода данных в командной строке, необходимо указать «-» в качестве имени файла и использовать $ переменные:
gnuplot> plot "-" using ($1):($2) with lines title 'My Line'
input data ('e' ends) > 1 2
input data ('e' ends) > 3 4
input data ('e' ends) > e
gnuplot>
Таким образом, вы можете изменить программу на языке Perl, как это:
use strict;
use warnings;
use 5.014;
open my $PROGRAM, '|-', 'gnuplot'
or die "Couldn't pipe to gnuplot: $!";
say {$PROGRAM} 'set terminal postscript';
say {$PROGRAM} "set output 'plot.ps'";
say {$PROGRAM} "plot '-' using (\$1):(\$2) with lines title 'My Line'";
print {$PROGRAM} "1 2\n3 4\ne\n";
close $PROGRAM;
Для сюжетных кругов, вы можете сделать это:
gnuplot> set xrange [-2:5]
gnuplot> set yrange[-2:5]
gnuplot> plot "-" using ($1):($2):($3) with circles title 'My Circles'
input data ('e' ends) > 0 0 1 ****(x,y,radius)
input data ('e' ends) > 1 1 2
input data ('e' ends) > e
gnuplot>
Я действительно думал передать массив в gnuplot, а элементы в массиве могут быть только 0, 1 или 2. Согласно значению каждого элемента gnuplot либо рисует прямоугольник, круг или треугольник. Я думаю, что gnuplot не лучший инструмент для этого, не так ли? @ 7stud – coldler
Это не слишком обременительно, чтобы записывать ваши данные в файл. При необходимости вы можете использовать модуль tempfile. – 7stud
Но могу ли я отобразить «0, 1, 2» в «прямоугольник, круг, треугольник», даже если я напишу «0, 1, 2» в файл? @ 7stud – coldler