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.
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:
-
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
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.
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);
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()
¿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 unn 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