2009-12-31 50 views
35

Actualmente tengo una matriz matriz nx3. Quiero trazar las tres columnas como tres ejes. ¿Cómo puedo hacer eso?¿Cómo hacer un diagrama de dispersión en 3D en Python?

He buscado en Google y la gente sugirió usar Matlab, pero realmente estoy teniendo dificultades para entenderlo. También necesito que sea una trama de dispersión.

¿Alguien me puede enseñar?

+1

¿Está buscando una aplicación para hacer la trama o desea escribir un código (en cualquier idioma) que dibuje la trama? –

+0

¡Usa la asíntota, es gratis, potente y la calidad es increíble! –

+1

Si tiene una matriz, supongo que tiene un programa y esta matriz es parte de ella. ¡Por favor, danos la oportunidad de ayudarte indicando qué tipo de programa (lenguaje) es! –

Respuesta

66

Puede utilizar matplotlib para esto. matplotlib tiene un módulo mplot3d que hará exactamente lo que usted desea.

from matplotlib import pyplot 
from mpl_toolkits.mplot3d import Axes3D 
import random 


fig = pyplot.figure() 
ax = Axes3D(fig) 

sequence_containing_x_vals = list(range(0, 100)) 
sequence_containing_y_vals = list(range(0, 100)) 
sequence_containing_z_vals = list(range(0, 100)) 

random.shuffle(sequence_containing_x_vals) 
random.shuffle(sequence_containing_y_vals) 
random.shuffle(sequence_containing_z_vals) 

ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals) 
pyplot.show() 

El código anterior genera una figura como:

matplotlib 3D image

+0

Buena solución. Tenga en cuenta que 'plt.zlabel ('zlabel')' no funcionará. Para etiquetar el eje z, debe usar: 'ax.set_zlabel ('Z')'. –

-3
+0

Deberías considerar seriamente a MayaVi. Utilizamos MayaVi aquí para todo el trazado 3D y es realmente bueno. –

+1

-1, un enlace no es una respuesta. –

0

Utilice el siguiente código que trabajó para mí:

# Create the figure 
    fig = plt.figure() 
    ax = fig.add_subplot(111, projection='3d') 

    # Generate the values 
    x_vals = X_iso[:, 0:1] 
    y_vals = X_iso[:, 1:2] 
    z_vals = X_iso[:, 2:3] 

    # Plot the values 
    ax.scatter(x_vals, y_vals, z_vals, c = 'b', marker='o') 
    ax.set_xlabel('X-axis') 
    ax.set_ylabel('Y-axis') 
    ax.set_zlabel('Z-axis') 

    plt.show() 

mientras X_iso es mi 3 -D matriz y para X_vals, Y_vals, Z_vals I copy/u sed 1 columna/eje de esa matriz y asignado a esas variables/matrices, respectivamente.

Cuestiones relacionadas