2013-07-27 59 views
1

我想在perl中管一個gnuplot腳本來獲取一些圖。我data.dat樣子:爲管道gnuplot腳本使用不同類型的變量

1  5  2 
2  3  9 
3  9  6 
4  -4  8 
5  -3  4 
6  11  2 
7  0  -3 
8  -8  -2 
9  1  0 
10  22  0 

我想這個腳本:

#!/usr/bin/perl -w  
use strict; 

my $type="png"; 

open(my $GP,'| gnuplot'); 

print {$GP} << "__GNUPLOT__"; 

set style data lines 
#set logscale y 
set terminal $type 
set output 'pic.$type' 
plot "data.dat" u 1:2, "" u 1:3 

__GNUPLOT__ 

close $GP; 

我的目標是繪製數標尺。由於負面數據,我想使用plot "data.dat" u 1:(abs($2)), "" u 1:(abs($3))。所以我想訪問我的perl腳本變量和gnuplot變量$2$3。不引用heredoc __GNUPLOT__不適用於此。我發現那些對待類似題目的帖子:

我不知道這個問題是bash的相同。我還沒有嘗試,但也會對此感興趣。我只想更多地瞭解管道,引用和不同類型變量的一般問題。

+0

有一個Gnuplot模塊。它基本上是在腳本中手動執行的操作,並提供一個界面。 [圖表::的Gnuplot](https://metacpan.org/module/Chart::Gnuplot)。缺點是它需要GhostScript一個imagemagick來生成PNG圖像。沒有這個模塊,我從來沒有使用過gnuplot,所以我不知道這種行爲是否正常。 – Demnogonis

+0

如果可能的話,我會堅持Gnuplot的標準版本而不安裝額外的模塊。 Thx雖然你的輸入。 – EverythingRightPlace

回答

2

表達式$2只是column(2)的簡寫。因此,如果您在轉義時遇到問題,請使用

plot "data.dat" u 1:(abs(column(2))), "" u 1:(abs(column(3))) 
+0

好吧,這很簡單,謝謝:)你也知道通過引用管道有什麼區別嗎? – EverythingRightPlace