Diagrama de dispersi贸n de Matplotlib: tutorial y ejemplos

    Introducci贸n

    Matplotlib es una de las bibliotecas de visualizaci贸n de datos m谩s utilizadas en Python. Desde visualizaciones simples hasta complejas, es la biblioteca de referencia para la mayor铆a.

    En este tutorial, veremos c贸mo trazar un diagrama de dispersi贸n en Matplotlib.

    Datos de importacion

    Usaremos el Vivienda Ames conjunto de datos y visualizaci贸n de correlaciones entre caracter铆sticas de 茅l.

    Importemos Pandas y carguemos en el conjunto de datos:

    import pandas as pd
    
    df = pd.read_csv('AmesHousing.csv')
    

    Trazar un diagrama de dispersi贸n en Matplotlib

    Ahora, con el conjunto de datos cargado, importemos Matplotlib, decidamos las caracter铆sticas que queremos visualizar y construyamos un diagrama de dispersi贸n:

    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.read_csv('AmesHousing.csv')
    
    fig, ax = plt.subplots(figsize=(10, 6))
    ax.scatter(x = df['Gr Liv Area'], y = df['SalePrice'])
    plt.xlabel("Living Area Above Ground")
    plt.ylabel("House Price")
    
    plt.show()
    

    Aqu铆, hemos creado un gr谩fico, usando la instancia de PyPlot, y hemos establecido el tama帽o de la figura. Usando el devuelto Axes objeto, que se devuelve desde el subplots() funci贸n, hemos llamado a la scatter() funci贸n.

    Necesitamos suministrar el x y y argumentos como las caracter铆sticas que nos gustar铆a utilizar para poblar la trama. Ejecutar este c贸digo da como resultado:

    Tambi茅n hemos establecido las etiquetas xey para indicar lo que representan las variables. Existe una clara correlaci贸n positiva entre estas dos variables. Cuanto m谩s 谩rea hay sobre el nivel del suelo, m谩s alto era el precio de la casa.

    Hay algunos valores at铆picos, pero la gran mayor铆a sigue esta hip贸tesis.

    Trazar m煤ltiples diagramas de dispersi贸n en Matplotlib

    Si desea comparar m谩s de una variable con otra, como, por ejemplo, verifique la correlaci贸n entre la calidad general de la casa y el precio de venta, as铆 como el 谩rea sobre el nivel del suelo, no es necesario hacer un diagrama 3D para esta.

    Si bien existen gr谩ficos 2D que visualizan correlaciones entre m谩s de dos variables, algunos de ellos no son completamente amigables para principiantes.

    Una manera f谩cil de hacer esto es trazar dos parcelas: en una, trazaremos el 谩rea sobre el nivel del suelo contra el precio de venta, en la otra, trazaremos la calidad general contra el precio de venta.

    Echemos un vistazo a c贸mo hacer eso:

    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.read_csv('AmesHousing.csv')
    
    fig, ax = plt.subplots(2, figsize=(10, 6))
    ax[0].scatter(x = df['Gr Liv Area'], y = df['SalePrice'])
    ax[0].set_xlabel("Living Area Above Ground")
    ax[0].set_ylabel("House Price")
    
    ax[1].scatter(x = df['Overall Qual'], y = df['SalePrice'])
    ax[1].set_xlabel("Overall Quality")
    ax[1].set_ylabel("House Price")
    
    plt.show()
    

    Aqu铆, hemos llamado plt.subplots(), pasando 2 para indicar que nos gustar铆a instanciar dos subtramas en la figura.

    Podemos acceder a estos a trav茅s del Axes instancia – ax. ax[0] se refiere a los ejes de la primera subtrama, mientras que ax[1] se refiere a los ejes de la segunda subtrama.

    Aqu铆, hemos llamado al scatter() funcionan en cada uno de ellos, proporcion谩ndoles etiquetas. Ejecutar este c贸digo da como resultado:

    Trazar un diagrama de dispersi贸n 3D en Matplotlib

    Si no desea visualizar esto en dos subtramas separadas, puede trazar la correlaci贸n entre estas variables en 3D. Matplotlib tiene una funci贸n de trazado 3D incorporada, por lo que hacerlo es muy sencillo.

    Primero, necesitaremos importar el Axes3D clase de mpl_toolkits.mplot3d. Este tipo especial de Axes es necesario para visualizaciones 3D. Con 茅l, podemos pasar otro argumento: z, que es la tercera caracter铆stica que nos gustar铆a visualizar.

    Sigamos adelante e importemos el Axes3D objeto y trazar un diagrama de dispersi贸n contra las tres caracter铆sticas anteriores:

    import matplotlib.pyplot as plt
    import pandas as pd
    from mpl_toolkits.mplot3d import Axes3D
    
    df = pd.read_csv('AmesHousing.csv')
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection = '3d')
    
    x = df['SalePrice']
    y = df['Gr Liv Area']
    z = df['Overall Qual']
    
    ax.scatter(x, y, z)
    ax.set_xlabel("Sale price")
    ax.set_ylabel("Living area above ground level")
    ax.set_zlabel("Overall quality")
    
    plt.show()
    

    La ejecuci贸n de este c贸digo da como resultado una visualizaci贸n 3D interactiva que podemos desplazar e inspeccionar en un espacio tridimensional:

     

    Personalizaci贸n del gr谩fico de dispersi贸n en Matplotlib

    Puede cambiar el aspecto de la trama proporcionando el scatter() funci贸n con argumentos adicionales, como color, alpha, etc:

    ax.scatter(x = df['Gr Liv Area'], y = df['SalePrice'], color = "blue", edgecolors = "white", linewidths = 0.1, alpha = 0.7)
    

    Ejecutar este c贸digo resultar铆a en:

    Conclusi贸n

    En este tutorial, hemos repasado varias formas de trazar un diagrama de dispersi贸n usando Matplotlib y Python.

    Si est谩 interesado en la visualizaci贸n de datos y no sabe por d贸nde empezar, aseg煤rese de consultar nuestro libro sobre Visualizaci贸n de datos en Python.

    Data Visualization in Python, un libro para desarrolladores de Python principiantes e intermedios, lo guiar谩 a trav茅s de la manipulaci贸n simple de datos con Pandas, cubrir谩 bibliotecas de trazado centrales como Matplotlib y Seaborn, y le mostrar谩 c贸mo aprovechar las bibliotecas declarativas y experimentales como Altair.

     

    Visualizaci贸n de datos en Python

    隆Comprenda mejor sus datos con visualizaciones! Con 340 p谩ginas, aprender谩 los entresijos de la visualizaci贸n de datos en Python con bibliotecas populares como Matplotlib, Seaborn, Bokeh y m谩s.

     

    Etiquetas:

    Deja una respuesta

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