我在尝试创建3D(2D映射)图时遇到问题。
我生成的数据应该创建一个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
当我在以下DataFile上运行它时( http://www.sendspace.com/file/ppibyw)
我得到以下输出
图例表示z范围为0-0.03,但是,数据文件具有更大的z值,例如0.1。显然我无法发布一个如此不准确的图表。此外,我需要一个更好的图表,以便更好地了解我的模拟有什么问题。
有谁知道为什么gnuplot会像这样处理3d映射图?我怀疑它与样品的数量和性质有关。
答案 0 :(得分: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,它不在其他(非映射)视图上 - 改变yrange消除它 - 虽然我不确定它改变y范围在模拟结果方面作弊....