Diagrama de dispersión Plotly - Tutorial con ejemplos

En este tutorial, veremos cómo trazar un diagrama de dispersión con Plotly y Python, así como también cómo personalizarlo, con ejemplos.

Introducción

Plotly es una biblioteca de visualización de datos de Python basada en JavaScript, enfocada en visualizaciones interactivas y basadas en la web. Tiene la sencillez de Seaborn, con una API de alto nivel, pero también la interactividad de Bokeh.

Además de la funcionalidad de la biblioteca principal, el uso del Plotly Express integrado con Dash lo convierte en una excelente opción para aplicaciones basadas en web y tableros interactivos basados ​​en datos, generalmente escritos en Flask.

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

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

Importar datos

Estaremos trabajando con el Conjunto de datos de ataque al corazón de Kaggle, que contiene datos sobre varias métricas corporales que podríamos usar como indicadores de la posibilidad de un ataque al corazón.

Importemos el conjunto de datos e imprimamos head() para echar un vistazo:

1
2
3
4
import pandas as pd

df = pd.read_csv('heart.csv')
print(df.head())

Esto resulta en:

1
2
3
4
5
6
   age cp  trtbps  chol  fbs  restecg  thalachh  exng  oldpeak  slp  caa output
0   63   3     145   233    1        0       150     0      2.3    0    0      1
1   37   2     130   250    0        1       187     0      3.5    0    0      1
2   41   1     130   204    0        0       172     0      1.4    2    0      1
3   56   1     120   236    0        1       178     0      0.8    2    0      1
4   57   0     120   354    0        1       163     1      0.6    2    0      1

Exploremos las relaciones entre funciones como thalachh (frecuencia cardíaca máxima registrada), trtbps (presión arterial en reposo), chol (cantidad de colesterol) y output (0 o 1 , que representan posibilidades más bajas o más altas de sufrir un ataque al corazón, respectivamente).

Primero, sigamos adelante y guardemos nuestras funciones por separado por motivos de brevedad:

1
2
3
4
max_heartrate = df['thalachh']
resting_blood_pressure = df['trtbps']
cholesterol_level = df['chol']
output = df['output']

Trace un diagrama de dispersión con Plotly

Finalmente, podemos seguir adelante y trazar un diagrama de dispersión. Avancemos y primero exploremos la relación entre max_heartrate y cholesterol_level. Para trazar un diagrama de dispersión con Plotly, usaremos la función scatter() de la instancia de Plotly Express (px):

1
2
fig = px.scatter(x=cholesterol_level, y=max_heartrate)
fig.show()

Los únicos argumentos requeridos son las funciones x e y, que trazarán un diagrama de dispersión (sin etiquetas de eje) en un servidor de su navegador de elección:

simple plotly scatter plot

Alternativamente, si no desea definir sus variables de antemano, Plotly ofrece exactamente la misma sintaxis que Seaborn: usted especifica la fuente de datos y los nombres de las características que desea visualizar. Esto asignará las características a las etiquetas y las trazará directamente sin tener que especificar las características como hicimos antes:

1
2
3
4
5
6
7
import pandas as pd
import plotly.express as px

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

fig = px.scatter(df, x='chol', y='thalachh')
fig.show()

Esto resulta en:

plotly diagrama de dispersión con etiquetas

Nota: También puede hacer una mezcolanza de estos enfoques, donde proporcione su DataFrame como fuente, pero también use variables predefinidas en lugar de hacer referencia a los nombres de columna de características en scatter() llamada:

1
2
fig = px.scatter(df, x=cholesterol_level, y=max_heartrate)
fig.show()

Esto da como resultado un diagrama de dispersión etiquetado también:

diagrama de dispersión plotly etiquetado

No parece haber mucha correlación entre el nivel de colesterol y la frecuencia cardíaca máxima de las personas en este conjunto de datos.

Personalización de un diagrama de dispersión de Plotly

Ahora, rara vez visualizamos gráficos sencillos. El punto es visualizar ciertas características de los datos, intuitivamente.

En nuestro caso, esto podría incluir colorear los marcadores dependiendo de la característica de salida, o agregar hover_data, que especifica lo que se muestra en los marcadores cuando alguien se desplaza sobre ellos.

Actualmente, hover_data no es muy útil, solo nos muestra los valores x e y, que ya se pueden inferir razonablemente al observar el gráfico resultante.

Avancemos y cambiemos algunos de los parámetros para hacer que este gráfico sea un poco más intuitivo:

1
2
3
4
5
6
7
import pandas as pd
import plotly.express as px

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

fig = px.scatter(df, x='chol', y='thalachh', color='output', hover_data=['sex', 'age'])
fig.show()

Hemos configurado el “color” de cada marcador para que se asigne a la función de “salida”, coloreando las posibilidades más altas y más bajas de experimentar un ataque cardíaco en diferentes colores. También hemos incluido el sexo y la edad de cada individuo en sus marcadores.

Esto resulta en:

personalizar plotly scatter plot

Finalmente, también puede cambiar el tamaño del marcador, ya sea pasándole un valor escalar (como 5) al método fig.update_traces(), o pasándole un valor vectorial (como asignando el tamaño a una característica) al argumento tamaño.

Mapeemos la función oldpeak con el tamaño de cada marcador:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pandas as pd
import plotly.express as px

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

fig = px.scatter(df, x='chol', 
                y='thalachh', 
                color='output', 
                size='oldpeak', 
                hover_data=['sex', 'age'])
fig.show()

Ahora, cada marcador tendrá un tamaño variable, dependiendo de los valores de la función oldpeak:

plotly scatter plot de tamaño variable

O, si desea hacer específicamente que todos los marcadores tengan el mismo tamaño fijo, puede actualizar los trazos de la Figura:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import plotly.express as px

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

fig = px.scatter(df, x='chol',
                y='thalachh',
                color='output',
                hover_data=['sex', 'age'])

fig.update_traces(marker={'size': 10})    
fig.show()

Esto resulta en:

diagrama de dispersión plotly de tamaño fijo

Conclusión

En esta guía, hemos echado un vistazo a cómo trazar un diagrama de dispersión usando Python y Plotly.

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.