2009-11-18 8 views
3

Comment générer un graphique de contour comme ceci: contour http://www.fz-juelich.de/vislab/software/gsharp/Gsharp/userguide/interpolate/ex6.gifComment générer un graphique de contour?

Il est assez facile si les points sont sur une grille régulière, mais si elles ne sont pas, comme dans mon exemple? Existe-t-il un algorithme assez simple pour déterminer la couleur de chaque pixel?

+0

ne doit pas nécessairement être un contour graphique, mais quelque chose qui ressemble. Ce que certaines personnes appellent une carte de chaleur pourrait également fonctionner. –

Répondre

0

Consulter l'interpolation 2D. Il existe quelques algorithmes simples, mais ils peuvent ne pas fonctionner aussi bien (ou prendre beaucoup de temps pour calculer).

1

De here

graphique Contour XYZ son origine vous permet de créer un tracé de contour sans jamais avoir à convertir vos données XYZ à une matrice. Il utilise une forme d'interpolation appelée triangulation. La triangulation est la division d'un polygone de surface ou d'un plan en un ensemble de triangles, habituellement avec la restriction que chaque côté du triangle est entièrement partagé par deux triangles adjacents. La triangulation a l'avantage supplémentaire de pouvoir traiter de façon éparse, aussi bien comme des données irrégulières.

Cela semble difficile mais faisable.

2

Il existe de nombreux algorithmes d'interpolation que vous pouvez utiliser pour obtenir des points intermédiaires. Un que j'ai utilisé dans le SIG est le Kriging algorithm, et il semble que les données que vous avez publiées utilisent quelque chose de similaire. (Vous pouvez dire parce que les taches jaunes par exemple « chaud » ne sont pas centrées sur l'échantillon jaune, ce qui serait le cas avec interpolation linéaire)

Wikipedia's Bicubic Interpolation page has some nice examples of the effect of choosing a different interpolation.

données différentes peuvent nécessiter différentes interpolation.

Ensuite, utilisez Gnuplot

as described here, pour créer des contours de couleur.

Looks like it can handle non-rectangular data, mais je voudrais tester cette hypothèse.

Un exemple:

Example GnuPlot contour image http://t16web.lanl.gov/Kawano/gnuplot/fig/sample6.8b.png

+0

Peut-il fonctionner avec des données clairsemées/irrégulières? – BostonLogan

1

L'image ne correspond pas un tracé de contour traditionnel. C'est essentiellement ce que matlab pourrait produire avec la fonction pcolor, si cette fonction pouvait fonctionner directement sur des données dispersées. En fait, pcolor est juste surfer, avec un appel à voir (0,90).

Si vous voulez vraiment voir un tracé de contour, la réponse la plus simple est d'utiliser tricontour, trouvé sur l'échange de fichiers. Cet outil va trianguler les données dispersées, puis générer un tracé de contour.

Si vous souhaitez générer une solution de type pcolor sur un ensemble de données dispersées, une solution simple est d'utiliser delaunay pour trianguler les données, puis appelez trisurf. Les appels peuvent sembler vaguement comme ça ...

tri = delaunay(x,y); 
trisurf(tri,x,y,z) 
view(0,90) 

Certes, cette solution ne vous donnera pas le domaine de couleur bien circulaire dans l'image originale. D'autres solutions plus sophistiquées seraient nécessaires pour cela. Mais puisque je ne suis pas encore sûr que la solution que j'ai posée soit acceptable, je m'arrête ici pour l'instant.

Questions connexes