Diagrama de dispersión de Matplotlib: tutorial y ejemplos

D

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.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad