2012-07-18 24 views
13

Soy nuevo en python. Quiero generar las líneas, que obtengo de una matriz en 3D.¿Cómo puedo hacer una línea 3D simple con Matplotlib?

Aquí está el código:

VecStart_x = [0,1,3,5] 
VecStart_y = [2,2,5,5] 
VecStart_z = [0,1,1,5] 
VecEnd_x = [1,2,-1,6] 
VecEnd_y = [3,1,-2,7] 
VecEnd_z =[1,0,4,9] 

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

ax.plot([VecStart_x ,VecEnd_x],[VecStart_y,VecEnd_y],[VecStart_z,VecEnd_z]) 
plt.show() 
Axes3D.plot() 

Allways me sale ese error:

ValueError: tercer arg debe ser una cadena de formato

aprecio su ayuda.

Respuesta

15

Supongo que quiere trazar 4 líneas. Entonces puede probar

for i in range(4): 
    ax.plot([VecStart_x[i], VecEnd_x[i]], [VecStart_y[i],VecEnd_y[i]],zs=[VecStart_z[i],VecEnd_z[i]]) 

Como @Nicolas ha sugerido, eche un vistazo a la galería matplotlib.

+0

Eso lo solucionó. Gracias. –

5

La galería es un gran punto de partida para descubrir ejemplos:

http://matplotlib.org/gallery.html

No es un ejemplo de diagrama de puntos 3d aquí:

http://matplotlib.org/examples/mplot3d/lines3d_demo.html

Usted ve que es necesario pasar a la función ax.plot 3 vectores. En realidad está pasando lista de listas. No sé qué quiere decir con el inicio y el final sub-lista, pero la línea siguiente debería funcionar:

ax.plot(VecStart_x + VecEnd_x, VecStart_y + VecEnd_y, VecStart_z +VecEnd_z) 

Aquí sumar la lista secundaria (concatenación) con el fin de tener una sola lista por eje.

Cuestiones relacionadas