Gráficos en tercera dimensión (3D) con Python y Matplotlib - Ejemplos Prácticoss

Índice

introducción

Hola amigos de Internet. Les doy la bienvenida a Mi Diario Python, el mejor lugar para Aprender Python.

En este articulo, veremos los métodos de matplotlib que nos permiten graficar y visualizar datos en tercera dimensión.

¿Como es un gráfico 3D? Es algo así:

 

Por supuesto, es necesario disponer de la libreria matplotlib, la cual podemos instalar desde nuestra consola:

pip install matplotlib


Y también utilizaremos numpy:

pip install numpy

Se recomienda tener un conocimiento previo del manejo de esta libreria.

Te recomiendo ver nuestro articulo sobre matplotlib: 

Visualización de Datos con Python y Matplotlib

 

Gráficos 3D con Matplotlib

Muy bien, sabemos matplotlib es la mejor herramienta para la visualización de datos.

Con la visualización de datos en tercera dimensión, podremos ver de manera más detallada y de manera más interactiva los datos. Por supuesto, no solo nos interesa el aspecto, si no la utilidad. En algún momento tendremos que graficar datos en 3D.

Con Matplotlib, grafica datos en 3D, es muy fácil. Que mejor que un ejemplo?

 

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import style

# Creamos la figura
fig = plt.figure()

# Agrrgamos un plano 3D
ax1 = fig.add_subplot(111,projection='3d')

# Mostramos el gráfico
plt.show()
 

 

Gráficos 3D con Matplotlib Python

 

Y de esta manera, tenemos un plano tridimensional.

¿Que hace falta? Por supuesto, los datos. Para ello, utilizaremos la libreria numpy y el metodo plot_wireframe:

 

# Modulos con los que trabajaremos
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

# Creamos la figura
fig = plt.figure()

# Agrrgamos un plano 3D
ax1 = fig.add_subplot(111,projection='3d')

# Datos en array bi-dimensional
x = np.array([[1,2,3,4,5,6,7,8,9,10]])
y = np.array([[5,6,7,8,2,5,6,3,7,2]])
z = np.array([[1,2,6,3,2,7,3,3,7,2]])

# plot_wireframe nos permite agregar los datos x, y, z. Por ello 3D
# Es necesario que los datos esten contenidos en un array bi-dimensional
ax1.plot_wireframe(x, y, z)

# Mostramos el gráfico
plt.show()
 

 

Gráficos 3D con Matplotlib Python

 

Y aquí tenemos nuestro resultado. Muy bonito ¿No?

Scatter en Tercera Dimensión

Podemos graficar scatter utilizando la misma tecnica anterior. En este caso, no sera necesario utilizar el método plot_wireframe. Veamos un ejemplo:

 

# Scatter

# importamos las librerias necesarias
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

# Creamos la figura
fig = plt.figure()
# Creamos el plano 3D
ax1 = fig.add_subplot(111, projection='3d')

# Definimos los datos de prueba
x = [1,2,3,4,5,6,7,8,9,10]
y = [5,6,7,8,2,5,6,3,7,2]
z = [1,2,6,3,2,7,3,3,7,2]

# Datos adicionales
x2 = [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
y2 = [-5,-6,-7,-8,-2,-5,-6,-3,-7,-2]
z2 = [1,2,6,3,2,7,3,3,7,2]

# Agregamos los puntos en el plano 3D
ax1.scatter(x, y, z, c='g', marker='o')
ax1.scatter(x2, y2, z2, c ='r', marker='o')

# Mostramos el gráfico
plt.show()

 

Scatter en Tercera Dimensión Python

 

Y tenemos obtenemos el resultado esperado. Podemos graficar la cantidad de scatter que sean necesarias, solo utilizando el método scatter.

Barras en Tercera Dimensión

Si podemos hacer puntos, por que no barras? Las barras son un elemento muy importante en la graficación de datos. Nos permite ver de manera detallada, los datos que representa.

Con el método bar3d podemos generar barras 3D de manera muy sencilla. Veamos un ejemplo:

 

# Importamos los modulos necesarios
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
 
fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')

# Definimos los datos
x3 = [1,2,3,4,5,6,7,8,9,10]
y3 = [5,6,7,8,2,5,6,3,7,2]
z3 = np.zeros(10)

dx = np.ones(10)
dy = np.ones(10)
dz = [1,2,3,4,5,6,7,8,9,10]

# utilizamos el método bar3d para graficar las barras
ax1.bar3d(x3, y3, z3, dx, dy, dz)

# Mostramos el gráfico
plt.show()

Barras en tercera dimensión Pytyhon

Y como podemos observar, el resultado es muy bueno.

Espero que te sirvan estos ejemplo como base para que puedas experimentar y probar tus propios datos.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

  1. Luna de mar dice:

    Hola!
    Quisiera saber si podrías ayudarme, debo pasar este script hecho en matlab a python, pero nunca he graficado en 3d en python y me encuentro algo perdida:
    x=-5:0.1:5;
    y=x;

    [X,Y]=meshgrid(x,y);

    Z=X.^2 - Y.^2;

    surf(Z);
    shading interp

    Gracias de antemano, por crear además ayuda tan detallada para los que nos encontramos en aprendizaje en python!

    1. Anónimo dice:

      Aqui no se hace tarea de nadie, investiga.

    2. Anónimo dice:

      El foro es de ayuda si no pretendes hacerlo es mejor que no digas nada.

    3. Anónimo dice:

      jajajajajjajajajajajajajajajj por perro

  2. Unknown dice:

    excelente explicación

  3. Unknown dice:

    Se podría hacer lo mismo con triangulos en lugar de barras ? gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey