2017-07-19 33 views
1

我有原始未像素合併數據,(x和y位移)的2列的文件。文件中的每一行對應一個新的時間步。我想將x和y位移相互關聯起來。創建從原始(未像素合併)數據中的gnuplot 2D直方圖(熱圖)

對於每一行,我想倉中的x值和bin中的y值成直方圖,然後添加一個「計數」爲相應的(X,Y)箱。

我已經做了大部分的這樣的代碼,它每一個裝倉軸,然後放置在相應的空間中的點/「計數」,但問題是,它不添加「罪名」在一起。相反,這些觀點恰恰相互重疊。你可以看到有些點比其他點有更多的點相互重疊的點更大膽/更暗。像這樣:

Gnuplot output with my full data set. Shows the bolder overlapping points

我的問題是:我如何才能被放置在彼此的頂部點/「計數」,(就像我的形象),加在一起,而不是讓我能看到更高的相關區域在哪裏與彩色地圖或類似的東西?

I'd like my plot to look like this instead, with the color value corresponding to the number of points/'counts' in the 2D bin

我gnuplot的代碼,有點做什麼,我想它做的事:

#!/usr/local/bin/gnuplot 

set term postscript eps enhanced color 
set encoding utf8 
set offsets 
set style fill solid 

bin(x,width,min)=width*(floor((abs(x) - min)/width) + 0.5) + min 

set output '2d.test.eps' 
set palette defined (-1 "red", 0 "white", 1 "blue") 
set cbrange [0:10] 

binwidth=0.1 
binwidth=0.1 
xmin=-360 
ymin=-360 
set boxwidth binwidth*0.75 

set view map 
splot '2d.dat' using (bin($1,binwidth,xmin)):(bin($2,binwidth,ymin)):(1.0) not 

數據文件格式:

0.864 3.868 
    1.878 3.617 
    0.138 2.787 
    0.646 3.220 
    -0.969 3.176 
    -0.447 3.031 
    -0.316 3.130 
    0.205 3.342 
    -1.127 3.661 
    -1.349 3.702 
... 

回答

0

如果你願意做AWK計算與uniq的計數,你可以使用:

awk 'function abs(x){return (sqrt(x*x))}{print 0.1*(int((abs($1)+360)/0.1)+0.5)-360" "0.1*(int((abs($2)+360)/0.1)+0.5)-360}' input.dat | sort | uniq -c > output.dat 

由於uniq的預先考慮你需要繪製該像

set view map 
splot "output.dat" 2:3:1 matrix with image 

計數這也應該是可能的gnuplot從內直接:(!注意逃脫「字符)

splot "<awk 'function abs(x){return (sqrt(x*x))}{print 0.1*(int((abs($1)+360)/0.1)+0.5)-360\" \"0.1*(int((abs($2)+360)/0.1)+0.5)-360}' data.dat | sort | uniq -c" u 2:3:1 2:3:1 matrix with image