2016-06-13 1 views
1

Je suis en train de faire this avec mon data qui a la structure suivante:matplotlib contourf3d plot_surface contre trisurf

0.90000000 0.90000000 -2133.80472139 
0.90000000 0.95000000 -2133.84134433 
... 
1.87500000 1.82500000 -2133.96171262 
1.87500000 1.87500000 -2133.95550450 

Avec le code suivant, j'ai réussi partiellement. Cependant, je ne peux pas tracer les contours sur les plans x-y, x-z et y-z. J'ai dû utiliser plot_trisurf car l'option plot_surface ne fonctionne pas pour ces données (je ne sais vraiment pas pourquoi). Créer un np.meshgrid n'a pas aidé (après avoir converti les listes en np.array).

import numpy as np 
import sys 
from mpl_toolkits.mplot3d import axes3d 
import matplotlib.pyplot as plt 
from matplotlib import cm 

filename = sys.argv[1] 

with open(filename+'.dat', 'r') as f: 
    x = [] 
    y = [] 
    z = [] 
    for line in f: 
     data = line.split() 
     x.append((float(data[0]))) 
     y.append((float(data[1]))) 
     z.append((float(data[2]))) 

zz = [627.503*(i+2134.070983645239) for i in z] 

fig = plt.figure() 
ax = fig.gca(projection='3d') 
ax.plot_trisurf(x, y, zz, cmap=cm.jet, linewidth=0.1) 
ax.dist=12 
ax.view_init(30, 45) 
ax.set_xlim(0.9, 1.9) 
ax.set_ylim(0.9, 1.9) 
ax.set_zlim(0, 170) 
plt.show() 

enter image description here

Avez-vous, vous, des idées sur la façon dont je pourrais avoir le contour sur la place de x-y et les projections sur le x-z et les y-z?

Répondre

1

Vous devez utiliser le contour triangulaire et contour triangulaire rempli: tricontour et tricontourf: http://matplotlib.org/examples/pylab_examples/tricontour_demo.html

J'ai ajouté à vous projection de terrain d'une surface à XY avec tricontourf:

fig = plt.figure() 
ax = fig.gca(projection='3d') 
ax.plot_trisurf(x, y, zz, cmap=cm.jet, linewidth=0.1) 
# projection of a surface to XY 
ax.tricontourf(x, y, zz, zdir='z', offset=-1, cmap=cm.coolwarm) 

ax.dist=12 
ax.view_init(30, 45) 
ax.set_xlim(0.9, 1.9) 
ax.set_ylim(0.9, 1.9) 
ax.set_zlim(0, 170) 
plt.show() 

enter image description here

+0

fonctionne parfaitement. À votre santé! –