2011-05-03 74 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