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

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.