0
我寫了一個perl腳本來解析一些文件並獲取一些數據。現在我想用gnuplot爲這些數據生成圖表。我可以將變量從perl傳遞給gnuplot嗎?將perl變量傳遞給gnuplot
順便說一句,因爲我沒有圖::圖形系統,我打算用管,這樣的事情
open GP, '| gnuplot';
。
我寫了一個perl腳本來解析一些文件並獲取一些數據。現在我想用gnuplot爲這些數據生成圖表。我可以將變量從perl傳遞給gnuplot嗎?將perl變量傳遞給gnuplot
順便說一句,因爲我沒有圖::圖形系統,我打算用管,這樣的事情
open GP, '| gnuplot';
。
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