Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

3D Mapped Graph with Gnuplot Not accurate

Tags:

graph

gnuplot

3d

I am encountering problems while trying to create a 3D (2D mapped) graph.

The data I am generating should create a 3 dimensional normal distribution bump, or, when "mapped", it should look like a flattened 3D graph, with color used as the third dimension

The script I am using to generate the mapped graph is the following:

#!/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

when I run it on the following DataFile (http://www.sendspace.com/file/ppibyw)

I get the following output enter image description here

The legend indicates a z-range of 0-0.03, however, the datafile has far larger z-values, such as 0.1. Obviously I can't publish a graph that is so inaccurate. Furthermore, I need a better graph in order to gain a better insight as to what is wrong with my simulation.

Does anyone know why gnuplot handles 3d mapped graphs like this? I suspect it has to do with the number, and nature, of the samples.

like image 657
puk Avatar asked May 03 '11 03:05

puk


1 Answers

You problem is in the set dgrid3d 51,51

Have a look at what happens if you write set dgrid3d 51,102 (much better) or set dgrid3d 51,500 (much worse)

The point is that (from the help)

The grid is equally spaced in x (rows) and in y (columns); the z values are computed as weighted averages or spline interpolations of the scattered points' z values. In other words, a regularly spaced grid is created and the a smooth approximation to the raw data is evaluated for all grid points. Only this approximation is plotted, but not the raw data.

You could try and improve the approximation if you want see the help (?dgrid3d), but I would rather just plot the data straight. You can do this by ditching the dgrid3d command altogether. You will have to modify your data file so that there is a blank line when the x coordinate changes. For example

3.10000000000000142109 4.15692193816530508599 0.00004084299890679580
3.10000000000000142109 4.33012701892219364908 0.00001123746243460237

3.15000000000000124345 0.08660254037844386521 0.00000816290100763514
3.15000000000000124345 0.25980762113533162339 0.00001935936190868058

Then with this simplified script

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

I get plotting the actual data rather than interpolated data

which is better than you get with the interpolated plot. I'm not sure what causes the glitch aroung 3.4, its not there on other (non-mapped) views - altering the yrange eliminates it - although I'm not sure it changing the y-range is cheating in terms of your simulation results....

like image 87
Tom Avatar answered Oct 16 '22 12:10

Tom