Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Tracer un champ scalaire avec un maillage irrégulier

+1 vote

Je dispose d'un fichier de données scalaires dans un plan 2D, formaté comme ceci :

abscisse1 ordonnée1 valeur1
abscisse2 ordonnée2 valeur2
...
abscissen ordonnéen valeurn

Je souhaite à partir de ces données tracer une carte 2D de mon champ scalaire, à la mode cartes thermiques.

En bref, je veux obtenir un graphe du style :
Graphe voulu

La difficulté est que le maillage de ma simulation n'est pas régulier : il semble que je ne puisse donc pas utiliser matplotlib.pyplot.pcolormesh
Existe-t-il une autre solution ?

EDIT : Grâce à la réponse de bubulle, voici le code qui réponds à mes attentes :

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

donnees = np.genfromtxt('donnees.txt', delimiter=',')
x = donnees[:,0]
y = donnees[:,1]
z = donnees[:,2]

cmap = cm.get_cmap(name='jet', lut=None) 
levels = np.arange(0., 25, .2)

plt.tricontourf(x, y, z, 15, cmap=cmap, levels=levels)
plt.colorbar()
plt.xlim(0, 1.2)
plt.ylim(-.4, .4)
plt.show()

J'obtiens finalement :
Graphe obtenu

demandé 7-Dec-2016 par GuiTsi
edité 10-Dec-2016

basemap pourrait correspondre à tes besoins. Tu fais pas de la carto, mais au final la sortie peut avoir les même propriétés. À voir.

1 Réponse

+3 votes
 
Meilleure réponse

Si ton maillage est composé de triangle, tu peux voir cet exemple (il y en a d'autre plein d'autres là: http://matplotlib.org/gallery.html)

Si tu n'as pas de maillage mais juste l'information [abscisse ordonnée valeur], je ne connais de pas de visualisateur qui traite cela directement. Il faudra que tu construises une triangulation à partir des coordonnées de tes points, scipy.spatial.Delaunay est une solution qui permet de rester en python.

répondu 8-Dec-2016 par bubulle (2,056 points)

Merci de m'avoir mis sur la bonne piste ! Matplotlib me prémâche le travail, il triangule tout seul.

PS : Ton message est la 1000e réponse du site

...