Google+ Seguidores

viernes, 17 de agosto de 2018

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

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()


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()


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()


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()



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.

No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .