2011-05-03 4 views
5

Je rencontre des problèmes en essayant de créer un graphe 3D (mappé 2D).Graphique mappé 3D avec Gnuplot Pas précis

Les données que je suis la génération devrait créer une 3 bosse de distribution normale dimensionnelle, ou, lorsque « cartographié », il devrait ressembler à un aplaties graphique 3D, avec la couleur utilisée comme la troisième dimension

Le script J'utilise pour générer le graphique cartographié est le suivant:

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

quand je le lance sur les points suivants DataFile (http://www.sendspace.com/file/ppibyw)

Je reçois la sortie suivante enter image description here

La légende indique une plage z de 0-0,03, cependant, le fichier de données a des valeurs z beaucoup plus grandes, telles que 0,1. Évidemment, je ne peux pas publier un graphique qui soit aussi inexact. De plus, j'ai besoin d'un meilleur graphique pour mieux comprendre ce qui ne va pas avec ma simulation.

Est-ce que quelqu'un sait pourquoi gnuplot gère les graphiques mappés en 3D comme ça? Je soupçonne que cela a à voir avec le nombre et la nature des échantillons.

+1

Salut puk, J'ai essayé votre script et je peux reproduire l'erreur évidente (version 4.4).Je voudrais essayer deux choses: 1: Comme vous l'avez suggéré, réduire le nombre de points et voir ce qui se passe. 2: Réduire le nombre de chiffres de chaque nombre. En dernier recours, vous pouvez émettre vos résultats [ici] (http://sourceforge.net/tracker/?group_id=2055&atid=102055). – Woltan

+0

@Woltan J'ai regardé autour et j'ai réduit le problème à la moyenne des bords. Donc, si vous avez un tableau 3x3 de [0,0,0, 0,100,0, 0,0,0], la valeur de 100 sera moyennée en fonction de tous les zéros environnants. J'ai trouvé une solution à cela qui dessine une série de petites cases par valeur matricielle, mais elle se bloque b/c j'ai eu beaucoup trop de valeurs, à quel point j'ai abandonné. – puk

Répondre

7

problème Vous est dans le set dgrid3d 51,51

Jetez un oeil sur ce qui se passe si vous écrivez set dgrid3d 51,102 (beaucoup mieux) ou un ensemble dgrid3d 51,500 (bien pire)

Le point est que (de l'aide)

La grille est équidistante en x (lignes) et en y (colonnes); les valeurs de z sont calculées en tant que moyennes pondérées ou interpolations splines de les valeurs z des points dispersés. En , une grille régulièrement espacée est créée et l'approximation lisse des données brutes est évaluée pour tous les points de la grille. Seulement cette approximation est tracée, mais pas les données brutes.

Vous pouvez essayer d'améliorer le rapprochement si vous voulez voir l'aide (? Dgrid3d), mais je préfère simplement tracer la ligne droite des données. Vous pouvez le faire en abandonnant complètement la commande dgrid3d. Vous devrez modifier votre fichier de données afin qu'il y ait une ligne vide lorsque la coordonnée x change. Par exemple

3.10000000000000142109 4.15692193816530508599 0.00004084299890679580 
3.10000000000000142109 4.33012701892219364908 0.00001123746243460237 

3.15000000000000124345 0.08660254037844386521 0.00000816290100763514 
3.15000000000000124345 0.25980762113533162339 0.00001935936190868058 

Ensuite, avec ce script simplifié

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 

Je reçois plotting the actual data rather than interpolated data

qui est mieux que vous obtenez avec l'intrigue interpolée. Je ne suis pas sûr de ce qui cause le problème 3.4, ce n'est pas le cas sur d'autres vues (non mappées) - modifier le yrange l'élimine - même si je ne suis pas sûr que cela change la gamme y est trompeur en termes de résultats de simulation

+0

merci pour la réponse. Cela fonctionne réellement. – puk