2011-05-03 69 views
5

我在嘗試創建3D(2D映射)圖時遇到了問題。使用Gnuplot進行3D映射的圖形不準確

我生成應該創建3維正態分佈凸塊,或者,當「映射」,它應該看起來像一個扁平的3D圖形數據,顏色用作第三維

腳本我使用以生成映射圖如下:

#!/usr/bin/gnuplot 

reset 

#set terminal png 
set term postscript eps enhanced 

set size square 
set xlabel "X position" 
set ylabel "Y position" 
#set zlabel "Synaptic Strength" 

#Have a gradient of colors from blue (low) to red (high) 
set pm3d map 
set palette rgbformulae 22,13,-31 

#set xrange [0:110] 
#set yrange [0:80] 
#set zrange [0:1] 

set style line 1 lw 1 

#set title "Title" 

#Don't want a key 
unset key 

#set the number of samples 
set dgrid3d 51,51 

set hidden3d 

splot DataFile u 1:2:3 

當我在以下的數據文件(http://www.sendspace.com/file/ppibyw

我得到以下輸出運行它 enter image description here

該圖例指示0-0.03的z範圍,但是,數據文件具有更大的z值,例如0.1。很顯然,我無法發佈一個非常不準確的圖表。此外,爲了更好地瞭解我的模擬有什麼問題,我需要一個更好的圖表。

有誰知道爲什麼gnuplot可以處理這樣的3D映射圖嗎?我懷疑這與樣本的數量和性質有關。

+1

嗨puk, 我給你的腳本嘗試一下,可以重現顯而易見的錯誤(版本4.4)。我會嘗試兩件事:1:如你所建議的,減少點數,看看會發生什麼。 2:減少每個數字的位數。 作爲最後的手段,你可以在你的調查結果[這裏](http://sourceforge.net/tracker/?group_id=2055&atid=102055)上查詢。 – Woltan 2011-05-03 06:30:36

+0

@Woltan我環顧四周,我將問題縮小到平均邊緣。所以如果你有一個3×3的[0,0,0,0,100,0,0,0,0]數組,100的值將根據所有周圍的0進行平均。我找到了一個解決方案,它爲每個矩陣值繪製了一系列小框,但它崩潰了b/c我有太多的值,這時我放棄了。 – puk 2011-05-05 07:49:12

回答

7

您的問題是在set dgrid3d 51,51

看看,如果你寫的(更糟糕)set dgrid3d 51,102(更好),或設置dgrid3d 51,500會發生什麼

的一點是,(從幫助)

網格在x(x)和y(x)中等距離排列。計算得到的值爲加權的 平均值或樣條插值的散點z值。換言之,創建規則間隔的網格 ,並且對原始數據的平滑近似爲 ,針對所有網格點進行評估。 只有 這個近似值被繪製出來,但是 不是原始數據。

你可以嘗試和改進的近似,如果你想看到的幫助(?dgrid3d),但我寧願只繪製數據直。您可以通過徹底拋棄dgrid3d命令來完成此操作。您將不得不修改您的數據文件,以便在x座標更改時存在空白行。例如

3.10000000000000142109 4.15692193816530508599 0.00004084299890679580 
3.10000000000000142109 4.33012701892219364908 0.00001123746243460237 

3.15000000000000124345 0.08660254037844386521 0.00000816290100763514 
3.15000000000000124345 0.25980762113533162339 0.00001935936190868058 

然後用這個簡單的腳本

set terminal png![enter image description here][1] 

#set size square 
set xlabel "X position" 
set ylabel "Y position" 

#uncomment the next command to eliminate the mysterious glitch around x=3.4 
set yrange [0.1:4.5] 
set pm3d map 

set output "grid_merged.png" 
splot "grid_merged2.dat" u 1:2:3 
set output 
set term pop 

我得到plotting the actual data rather than interpolated data

比你用插值情節變得更好。我不確定是什麼原因引起了小故障3.4,它不存在於其他(未映射的)視圖上 - 改變了yrange消除了它 - 儘管我不確定它是否改變y範圍在仿真結果方面​​是作弊的...

+0

感謝您的回覆。這實際上起作用。 – puk 2011-05-09 22:29:22