Matplotlib contour à partir des données xyz: griddata index non valide

Je suis en train de faire un tracé de contour à l'aide de matplotlib d'un fichier avec le format suivant:

x1 y1 z1

x2 y2 z2

etc

Je peux le charger avec numpy.loadtxt pour obtenir les vecteurs. Jusqu'à présent, aucune difficulté.

J'ai lu ce pour apprendre à tracer, et peuvent se reproduire par copier-coller, donc je suis sûr que rien est le problème avec mon installation:

http://matplotlib.org/examples/pylab_examples/griddata_demo.html

Je comprends pas j'ai de l'entrée x et y en tant que vecteur et z comme un tableau ,ce qui peut être fait avec griddata. C'est aussi ce que je trouve sur ce site.

La documentation dit:

zi = griddata(x,y,z,xi,yi) correspond à une surface de la forme z = f*(*x, y) pour les données de l' (généralement) decompos espacés de vecteurs (x, y, z). griddata() interpole cette surface aux points spécifiés par (xi, yi) pour produire de la zi. xi et yi doit décrire une grille régulière, peut être soit 1D ou 2D, mais doivent être de plus en plus monotone.

Pour le bien de l'exemple, j'ai écrit ce code:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as ml

x=np.linspace(1.,10.,20)
y=np.linspace(1.,10.,20)
z=np.linspace(1.,2.,20)

xi=np.linspace(1.,10.,10)
yi=np.linspace(1.,10.,10)

zi = ml.griddata(x,y,z,xi,yi)

Cependant, j'obtiens l'erreur suivante quand il s'agit de la griddata:
IndexError: index non valide

Donc, j'ai essayé de modifier un peu l'exemple de la doc comme suit:

from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2.1,2.1,300)
y = np.linspace(-2.1,2.1,300)
z = x*np.exp(-x**2-y**2)
# define grid.
xi = np.linspace(-2.1,2.1,100)
yi = np.linspace(-2.1,2.1,200)
# grid the data.
zi = griddata(x,y,z,xi,yi,interp='linear')

Et j'obtiens la même erreur. Je ne comprends pas ce qui ne va pas.

Merci pour votre aide.

OriginalL'auteur Napseis | 2012-12-08