用Gnuplot创建的3D图形不准确

5
我在尝试创建一个3D(2D映射)图形时遇到了问题。
我生成的数据应该创建一个三维正态分布隆起,或者当“映射”时,它应该看起来像一个扁平的三维图形,颜色用作第三个维度。
我用于生成映射图的脚本如下:
#!/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

当我在以下DataFile上运行它(http://www.sendspace.com/file/ppibyw), 我得到以下输出
图例显示了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
@Woltan 我查了一下,把问题缩小到了边缘平均化。所以如果你有一个3x3的数组[0,0,0, 0,100,0, 0,0,0],100的值将基于周围所有的零进行平均。我找到了一个解决方案,可以为每个矩阵值绘制一系列小框,但由于值太多而崩溃,于是我放弃了。 - puk
1个回答

7

你的问题出在set dgrid3d 51,51

看看当你写set dgrid3d 51,102时会发生什么(更好),或者设置dgrid3d 51,500(更差)

关键在于(来自帮助)

网格在x(行)和y(列)上是均匀分布的;z值被计算为散点的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

我得到了实际数据的绘图,而不是插值数据的绘图,这比插值绘图更好。我不确定什么原因导致3.4周围的故障,在其他(非映射)视图上没有这个问题-改变y轴范围可以消除它-虽然我不确定改变y轴范围是否会影响模拟结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接