Cómo hacer un diagrama de dispersión en 3D

3 minutos de lectura

avatar de usuario de user211037
usuario211037

Actualmente tengo una matriz de matriz nx3. Quiero trazar las tres columnas como tres ejes. ¿Cómo puedo hacer eso?

Busqué en Google y la gente sugirió usar matlab, pero realmente estoy teniendo dificultades para entenderlo. También necesito que sea un diagrama de dispersión.

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

    – Nils Pipenbrinck

    31 de diciembre de 2009 a las 15:38

  • Use asíntota: ¡es gratis, potente y la calidad es increíble!

    – Hamish Grubijan

    31 de diciembre de 2009 a las 15:40

  • Si tiene una matriz, supongo que tiene un programa y esta matriz es parte de él. ¡Danos la oportunidad de ayudarte indicando qué tipo de programa (idioma) es!

    -Carl Smotricz

    31 de diciembre de 2009 a las 15:46

  • Todavía usaría asíntota (como lib), o simplemente generaría el archivo de entrada para ello. ¡Echa un vistazo a su increíble calidad de salida!

    – Hamish Grubijan

    31 de diciembre de 2009 a las 15:54

  • si es un n por 3 matriz, obtendrá un gráfico de una curva en 3 dimensiones. Para un “gráfico 3-d”, necesitarías un n x m x l formación. ¿Quieres una curva, con cualquier tupla? (x,y,z) que representa un punto en la curva?

    – Alok Singhal

    31 de diciembre de 2009 a las 15:55

Avatar de usuario de Chinmay Kanchi
Chinmay Kanchi

Puedes usar matplotlib para esto. matplotlib tiene un mplot3d módulo que hará exactamente lo que usted quiere.

import matplotlib.pyplot as plt
import random

fig = plt.figure(figsize=(12, 12))
ax = fig.add_subplot(projection='3d')

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)
plt.show()

El código anterior genera una figura como:

ingrese la descripción de la imagen aquí

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

    – Yonatan Simson

    12 de mayo de 2016 a las 4:18

  • en lugar de matplotlib.pyplot, debe importarse matplotlib.pyplot

    – roktim

    1 de diciembre de 2021 a las 2:18

  • @roktim Buen lugar. El editor anterior cometió ese error al formatear la publicación que ahora he corregido.

    – rayryeng

    06/01/2022 a las 20:32

  • Esto era exactamente lo que estaba buscando, gracias! Solo para agregar a esto, también quería que mi diagrama de dispersión 3D rotara (necesitaba un gif de esto), y encontré esto entrada en el blog que describía cómo hacerlo con la solución que enumeró

    – S. Chauhan

    22 de agosto de 2022 a las 1:07

Avatar de usuario de Saeed Ullah
Saeed Ullah

Use el siguiente código que funcionó 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 que X_iso es mi matriz 3-D y para X_vals, Y_vals, Z_vals copié/usé 1 columna/eje de esa matriz y asigné a esas variables/matrices respectivamente.

Avatar de usuario de Aman Bagrecha
Aman Bagrecha

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')

gráfico de dispersión

zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata);

ingrese la descripción de la imagen aquí

Cuaderno de colaboración

Avatar de usuario de DataYoda
Datos Yoda

Uso de plotly: las tramas más fáciles, funcionales y agradables

import plotly.express as px
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
              color="species")
fig.show()

https://plotly.com/python/3d-scatter-plots/

¿Ha sido útil esta solución?