Bonjour à tous,
J'essaie de tracer un contour 3D ou une surface à partir de données numériques. En gros j'ai un fichier avec trois colonnes x,y et z et je veux tracer la surface correspondante. Je suis un super newbie en python et j'essaie tant bien que mal de ploter cette surface.
Voilà le code que j'ai essayé :
Code:#!/usr/bin/python from numpy import * import pylab as p import sys import mpl_toolkits.mplot3d.axes3d as p3 s = str(sys.argv[1]) f = open(s) z,y,x = loadtxt(f, unpack = True) f.close deltaV = 1.308167 #x = [1,2,3] #y = [1,2,3] #z = [1,8,16] data = zip(x,y,z) #map data on the plane X, Y = meshgrid(arange(0, 89, 1), arange(0, 300, 1)) Z = zeros((len(X),len(Y)),'Float32') for x_,y_,z_ in data: Z[x_, y_] = z_ #this should work, but only because x and y are integers #and arange was done with a step of 1, starting from 0 fig=p.figure() ax = p3.Axes3D(fig) ax.contourf(X,Y,Z) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') p.show()
Avec les vecteurs x, y et z que j'ai commenté plus haut dans le code, le programme fonctionne. Mais maintenant que j'ai cet énorme fichier et que j'essaie de le faire tourner je reçois une erreur qui me dit
" TypeError("Inputs x and y must be 1D or 2D.")"
Et je ne comprends pas bien ce que je dois faire pour y remédier.
En cherchant sur le net certains disent que la forme de Z n'est peut être pas la même que celle de X ou Y mais je ne sais pas quoi faire pour tester ou changer cela...
En tout cas, si vous avez un conseil merci d'avance !
-----