Diagrama de dispersión de Matplotlib - Tutorial y ejemplos

En este tutorial, veremos cómo trazar un diagrama de dispersión en Python usando Matplotlib. Cubriremos diagramas de dispersión, diagramas de dispersión múltiples en subparcelas y diagramas de dispersión 3D.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Desde visualizaciones simples a complejas, es la biblioteca de referencia para la mayoría.

En esta guía, veremos cómo trazar un diagrama de dispersión con Matplotlib.

Los diagramas de dispersión exploran la relación entre dos variables numéricas (características) de un conjunto de datos.

Importar datos

Usaremos el conjunto de datos Inmobiliaria Ames y visualizaremos las correlaciones entre las características de este.

Importemos Pandas y carguemos el conjunto de datos:

1
2
3
import pandas as pd

df = pd.read_csv('AmesHousing.csv')

Trace 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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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, utilizando la instancia de PyPlot, y hemos establecido el tamaño de la figura. Usando el objeto Axes devuelto, que es devuelto desde la función subplots(), hemos llamado a la función scatter().

Necesitamos proporcionar los argumentos x e y como las características que nos gustaría usar para completar el gráfico. Ejecutar este código da como resultado:

matplotlib simple scatter plot tutorial

También hemos establecido las etiquetas x e y para indicar lo que representan las variables. Existe una clara correlación positiva entre estas dos variables. Cuanta más superficie sobre rasante había, mayor era el precio de la casa.

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

Trazado de múltiples diagramas de dispersión en Matplotlib

Si desea comparar más de una variable con otra, como verificar la correlación entre la calidad general de la casa con el precio de venta, así como el área sobre el nivel del suelo, no es necesario que haga una trama 3D para esto.

Si bien existen gráficos 2D que visualizan las correlaciones entre más de dos variables, algunos de ellos no son totalmente aptos para principiantes.

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

Echemos un vistazo a cómo hacerlo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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 de la instancia Axes - 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 a la función scatter() en cada uno de ellos, proporcionándoles etiquetas. Ejecutar este código da como resultado:

matplotlib multiple scatter plots in subplots

Trazado de 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 funcionalidad de trazado 3D incorporada, por lo que hacerlo es muy sencillo.

Primero, necesitaremos importar la clase Axes3D desde mpl_toolkits.mplot3d. Este tipo especial de ‘Ejes’ es necesario para las visualizaciones 3D. Con él, podemos pasar otro argumento: z, que es la tercera característica que nos gustaría visualizar.

Avancemos e importemos el objeto Axes3D y tracemos un diagrama de dispersión contra las tres características anteriores:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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()

Ejecutar este código da como resultado una visualización 3D interactiva que podemos desplazar e inspeccionar en un espacio tridimensional:

matplotlib 3d scatter plot
matplotlib 3d scatter plot

Personalización del diagrama de dispersión en Matplotlib

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

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

Ejecutar este código daría como resultado:

matplotlib customize scatter plot

Conclusión

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

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.