2015-10-18 56 views
-1

我正在處理多個文件,我想從這些文件中繪製熱圖every ::121::600 using 3:25:43。 有沒有辦法將所有文件合併上飛獲得與像命令的熱圖:我想這來自cat,awk或sed的多個文件的熱圖(bash)

set dgrid3d 
splot '< cat data1.csv data2.csv data3.csv data4.csv' every ::121::600 using 3:25:43 w pm3d 

但似乎在劇情,只有從data1.csv數據顯示出來。我是否做錯了',?是awk還是sed一個選項?

我知道選項set table但我寧願一個乾淨的bash命令選項直接進行這個動態。

有沒有很好的資源來查找所有的unix命令與一些gnuplot演示?

感謝迄今爲止的答覆: 因此'是用於繪圖命令:例如, plot 'data1.csv' using 1:2 w l將從data1文件中用行打印第2行。這就是爲什麼我習慣在命令中使用'。我發現這個Site其中哎解釋gunplot一些的bash命令,但我還沒有找到我要找的

感謝您對我的問題很大階躍響應和幫助: 這工作:

plot '< for i in data1.csv data2.csv data3.csv data4.csv; do cat "$i"; echo; done' every ::121::600 using 3:25:43 w pm3d 

值得一提的是,我不得不廣告"就像vagoberto提出

與這工作相同的方式$i各地:

plot '< awk "FNR==1{print \"\"}1" data1.csv data2.csv data3.csv data4.csv' every ::121::600 using 3:25:43 w pm3d 

都在我的Mac OSX終端環境中工作,在Wind 7上安裝了gnuWin32 Package。

+2

我不知道gnuplot的,但你的描述給出了,你可能想[進程替換(https://www.gnu.org印象/software/bash/manual/bash.html#Process-Substitution)。語法是'<(cat data * .csv)'。根據'splot'是否需要在輸入文件中搜索,這可能會給你一個錯誤,因爲進程替換基本上返回一個字符設備。在Zsh中有一個替代語法'=(cat data * .csv)',它爲您提供了一個可查找的文件。 – 4ae1e1

+0

感謝迄今。這是正確的語法:''=(cat data1.csv data2.csv data3.csv data4.csv'every :: 121 :: 600 using 3:25:43 w pm3d'我試過了,但我得到的錯誤data1等不能被發現 –

+1

我不知道你爲什麼使用單引號=()。如果你使用單引號,那麼你不再使用shell的特性,因爲你是從字面上傳遞token的。我知道關於gnuplot,我只是從大多數* nix命令行實用程序的經驗來講。另外,正如我所說的,=()僅適用於zsh。 – 4ae1e1

回答

2

every ::121::600命令告訴gnuplot從每行的行的第121行到第600行(從0開始計數),而不是在每個文件上。您需要預處理數據以創建塊(在每個數據之間放置一行)。

考慮以下兩個數據文件:

#data1.dat   #data2.dat 
1 2     1.5 2.5   # line 0 
3 4     3.5 4.5   # line 1 
5 6     5.5 6.5   # line 2 

,並嘗試與every ::2::2陰謀(即僅積2號線)。

的下列指令創建一個單獨的塊,所以gnuplot的將繪製僅點(5,6)

cat data1.dat data2.dat 
1 2 
3 4 
5 6 
1.5 2.5 
3.5 4.5 
5.5 6.5 

以下指令將創建用於每個數據文件的塊,以便gnuplot的將繪製點(5,6)(5.5,6.5)

for i in data*.dat; do cat $i; echo; done 
1 2 
3 4 
5 6 

1.5 2.5 
3.5 4.5 
5.5 6.5 

你會得到通過awk 'FNR==1{print ""}1' data*.dat類似的結果。

綜上所述,下面應該工作:

plot '< for i in data*.dat; do cat $i; echo; done' every ::2::2 using 1:2 

# or 
plot '< awk "FNR==1{print \"\"}1" data*.dat' every ::2::2 using 1:2 
+0

非常感謝您的幫助,所以首先我需要將所有文件放在一起,形成一個文件,然後我可以發現它們嗎?謝謝你的幫助很遠 –

+0

是否有可能在Mac OS X上的槍戰中的貓命令不起作用? –

+0

當嘗試「p很多'爲我在數據*。數據;做貓$我;回聲;完成'every :: 3 :: 3 using 1:2'我期待{do-clause}錯誤:-(我在明天再次嘗試在Windows系統中。再次感謝您的幫助, –