No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Relation

15/18
Recursos

Seaborn maneja los gr谩ficos de relaci贸n entre distintas variables num茅ricas para hacer visualizaciones. Veamos los distintos gr谩ficos que tiene Seaborn para trabajar este tipo de relaciones.

Tipos de gr谩ficos de relaci贸n en Seaborn

Empieza importando los datos para empezar a graficar

import seaborn as sns
import matplotlib.pyplot as plt 

tips = sns.load_dataset('tips')
tips.head(2)

1. Scatter

sns.scatterplot(data= tips, x= 'total_bill', y = 'tip', hue= 'day');
scatter.JPG
  • Cambiar el estilo de los puntos y su tama帽o
sns.scatterplot(data= tips, x= 'total_bill', y = 'tip', hue= 'day', style= 'time', size='size');
plt.legend(loc= 'center', bbox_to_anchor= (1.12, 0.5))
scatter_style.JPG
  • Cambiar el formato de los marcadores
markers = {"Lunch": 'D', "Dinner": 's'}
sns.scatterplot(data= tips, x= 'total_bill', y = 'tip', hue= 'day', style= 'time', size='size', markers = markers);
plt.legend(loc= 'center', bbox_to_anchor= (1.12, 0.5));
markers.JPG

2. Line

sns.lineplot(data= tips, x= 'total_bill', y = 'tip',  hue= 'day', style= 'time', size='size');
lineplot.JPG

3. Relplot

  • Con kind podemos modificar el tipo de gr谩fico
sns.relplot(data= tips, x= 'total_bill', y = 'tip',  hue= 'day', style= 'time', size='size', kind= 'line');
relplot.JPG
  • Agregar el formato col
sns.relplot(data= tips, x= 'total_bill', y = 'tip',  hue= 'day', style= 'time', size='size', kind= 'scatter', col = 'time');
col.JPG

Aportes 46

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Tambi茅n podemos usar pairplot, te permite ver comparativas de pares de variables y analizar su comportamiento en un solo gr谩fico.

sns.pairplot(data=tips,hue='day')
plt.show() 

No se porque hasta ahora no se menciona pero hay un parametro llamado 鈥渁x鈥 para poder usar seaborn en subplots

No se trata de que un grafico sea mas complicado de ver que otro, y no se trata de gustos, cuando el profesor dice 鈥渆n lo personal me gusta mas este鈥, todo va a depender de la de variable que se esta graficando, de lo que se esta analizando, no vas a usar un grafico de dispersion para ver una serie de tiempo.
Por eso no me parece correcto que el profesor hable de gustos personales o de que un grafico sea mas sencillo que otro en lineas generales ya que la 鈥渃laridad鈥 depende de lo que se este analizando.

La funci贸n 鈥渃ol=鈥 es MARAVILLOSA. Te reduce mucha data a un simple golpe de vista.

Cambiar el tipo de grafica con kind:

Para visualizar un poco mejor los 煤ltimos datos del video podemos cambiar las columnas a 鈥渄ay鈥

Super recomendad la gr谩fica pairplot.

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Los gr谩ficos de relaci贸n me ayuda a ver la relaci贸n o correlaci贸n de diferentes variables num茅ricas

  • En seaborn creo que gr谩fico de dispersi贸n con la funci贸n scatterplot

  • Dentro de esta gr谩fica puedo categorizar por otra variable utilizando el par谩metro style

  • Puedo saber la frecuencia de mis datos utilizando el par谩metro size

  • Para manejar la legenda lo hago desde Matplotlib con la funci贸n legend y all铆 defino su ubicaci贸n

  • Igualmente, puedo usar la funci贸n relplot para decirle a seaborn que me sugiera una gr谩fica para visualizar una relaci贸n

15. Relation

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')
tips.head()

plt.figure(figsize=(8,8))
markers = {"Lunch":"D","Dinner":"s"}
sns.scatterplot(data=tips,x='total_bill',y='tip',hue='day',style='time',size='size',markers=markers);
plt.legend(loc='center',bbox_to_anchor=(1.12,0.5))

sns.lineplot(data=tips,x='total_bill',y='tip',hue='day',style='time',size='size');
plt.legend(loc='center',bbox_to_anchor=(1.12,0.5))

sns.relplot(data=tips,x='total_bill',y='tip',hue='day',style='time',size='size',col='time');
plt.figure(figsize=(8,8))
markers = {"Lunch":"D","Dinner":"o"}
sns.relplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size', markers=markers,kind='line',col='time')
plt.legend(loc='center', bbox_to_anchor=(1.12,0.5))
plt.show()

Para hacer el gr谩fico kind=line dej茅 en el dataset solo los n煤meros de comensales 2,3 y 4 que son los m谩s representativos y puse el n煤mero de comensales (size) como col.

cond_234 =(tips['size'] > 1) & (tips['size'] < 5)
tips_234 = tips[cond_234] 
markers = {"Lunch":"X", "Dinner":"s"} # defino la forma de los puntos 
sns.relplot(data=tips_234 ,x='total_bill',y='tip',hue='day',style='time',col='size',size='time',markers=markers,kind='line') # usa 
plt.show()

El gr谩fico de 2 personas qued贸 confuso. Pero el de 3 y 4 comensales son m谩s claros. Las l铆neas unen los puntos de igual day y time.
Todas las l铆neas por lo general muestran la relaci贸n positiva entre la facturaci贸n y las propinas.

por si les queda mal la visualizacion `sns.scatterplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size')` `# Ajustar la leyendaplt.legend(loc='center left', bbox_to_anchor=(1.12, 0.5))` `# Mostrar el gr谩ficoplt.show()`
Hola, Les comparto como dibuje el lineplot con relplot; ![](https://static.platzi.com/media/user_upload/imagen-b4db99ad-1b2b-407e-925c-85ee1c35b6a9.jpg)
![](https://static.platzi.com/media/user_upload/image-acf4481b-9ebf-4548-8891-72f733f764c0.jpg)

Estoy sorprendido con el desarrollo de estos graficos de relacion y como su uso puede ser implementado en muchas empresas. Es mejor saber como realizarlo sin tener algun conflicto.

![](https://static.platzi.com/media/user_upload/image-32943bb6-3f3a-46b8-b85f-e11bcf3681f6.jpg)sns.relplot(data=tips, x='total\_bill', y='tip', hue='day', style='time', size='size', kind='line')plt.show()```js sns.relplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size', kind='line')plt.show() ```Reto listo y efectivamente esta muy feo jaja

Aqui el resultado del reto

sns.relplot(data=tips,x='total_bill',y='tip',hue='day',style='time',size='size',kind='line')
plt.show()

El peque帽o reto

sns.relplot(data=tips, x='total_bill',y='tip', hue='day', style='time', size='size', kind='line');

sns.relplot(data=tips,x=鈥榯otal_bill鈥,y=鈥榯ip鈥,hue=鈥榙ay鈥,style=鈥榯ime鈥,size=鈥榮ize鈥,kind=鈥榣ine鈥)
plt.show()

Leyendo un poco la gu铆a de Seaborn, vi que relplot tiene 2 tipos de kind (鈥榮catter鈥 y 鈥榣ine鈥).

Quer铆a colocar 2 im谩genes juntas utilizando la funci贸n relplot con la misma data con kind=鈥榮catter鈥 a la izquierda y kind=鈥榣ine鈥 a la derecha y relplot no permite trabajar con el par谩metro 鈥榓x鈥.

As铆 que la soluci贸n es trabajar independientemente con scatterplot y lineplot y hacer las respectivas configuraciones para que se vea bien.

C贸digo:

import matplotlib.pyplot as plt
import seaborn as sns

# Crear los subplots con m谩s espacio entre ellos
fig, axes = plt.subplots(1, 2, figsize=(16, 4.5), gridspec_kw={'wspace': 0.32})

# Subplot 1 - Scatterplot
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size', ax=axes[0])
axes[0].legend(loc='upper right',bbox_to_anchor=(1.2,1.02))

# Subplot 2 - Lineplot
sns.lineplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size', ax=axes[1])
axes[1].legend(loc='upper right',bbox_to_anchor=(1.2,1.02))

plt.show()
sns.relplot(data = tips, x = 'total_bill', y = 'tip', hue = 'day', style = 'time', size = 'size', col = 'time', kind = 'line')
plt.show() 
sns.relplot(data=tips,x="total_bill",y="tip",hue="day",size="size",kind="scatter",col="time")
plt.show()
sns.relplot(data=tips,x='total_bill',y='tip',hue='day',style='time',size='size',kind='line')
plt.show()

(

sns.relplot(data=tips, x='total_bill', y='tip',hue='day',style='time',size='size',markers=markers, kind='line')
plt.show()

mi aporte , esta es una herramienta muy poderosa =D

<sns.relplot(data=tips, x='total_bill', y='tip', hue='day',style='time', size="size", kind='line')
plt.show()> 
sns.relplot(data=tips,x='total_bill',y='tip',hue='day',style='time',size='size',kind='line')
plt.show()

Aqu铆 mi aporte, use el dataset referente a la esperanza de vida de algunos pa铆ses a lo largo de los a帽os (healthexp), muy interesante observar c贸mo se relaciona directamente con el aumento de los salarios y el pasar de los a帽os, adem谩s se puede observar como para el 2020 hubo una disminuci贸n en todos los pa铆ses, posiblemente por la contingencia sanitaria del Sars 2 Covid 19.

dots = sns.load_dataset("healthexp")
 sns.scatterplot(data=dots, x="Year",y="Life_Expectancy",hue="Country",size="Spending_USD")
 plt.legend(loc="center",bbox_to_anchor=(1.2,0.6))

Tambien es evidente en el lineplot:

dots = sns.load_dataset("healthexp")
 sns.lineplot(data=dots, x="Year",y="Life_Expectancy",hue="Country")
 plt.legend(loc="center",bbox_to_anchor=(1.2,0.6))

Y si agregamos los par谩metro row y col podemos separar a煤n m谩s nuestros datos para mejor lectura.

plt.figure(figsize=(10,10))
markers = { "Lunch":"D", "Dinner":"s"} # predefino los markers con un diccionario
sns.relplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size', markers=markers, col='day', row='time');

RETO DE CLASE

Con relplot estoy teniendo el mismo problema que tuve con displot: no puedo expandir el lienzo. A alguien m谩s le sucede? De ser as铆: encontraron la soluci贸n?

Seaborn maneja los gr谩ficos de relaci贸n entre distintas variables num茅ricas para hacer visualizaciones. Veamos los distintos gr谩ficos que tiene Seaborn para trabajar este tipo de relaciones.
Tipos de gr谩ficos de relaci贸n en Seaborn Empieza importando los datos para empezar a graficar
________________________________________
[1]
0 s
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import markers
________________________________________
[2]
0 s
tips = sns.load_dataset("tips")
tips.head(10)
________________________________________
[3]
0 s
sns.scatterplot(data=tips,x="total_bill",y="tip")
plt.show()
#aca estamos graficando la relacion entre la cuenta y las propinas y podemos notar que cuando la cuanta es alta 
#mas propinan dejan los clientes, pueden haver casos atipicos, pero si hay cieta relacion entre las valriables 

________________________________________
[4]
0 s
sns.scatterplot(data=tips,x="total_bill",y="tip",hue="day")
plt.show()
#lo segmentamos y por cada color me reprecenta u dia distinto por semana y notamos que por dia hay cuentas diferentes 
________________________________________
[5]
0 s
sns.scatterplot(data=tips,x="total_bill",y="tip",hue="day",style="time")
plt.show()
#con style estamos reprecentando el tiempo que seria almuerzo y sena y me los reprecenta en circulos y equiz
#lo que podemos notar en la grafica es que para las senas la cuenta es mucho mas grande 
#estas relaciones se est谩n haciendo entre cuenta y propina 
________________________________________
[6]
0 s
plt.figure(figsize=(8,8))
sns.scatterplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size")
plt.legend(loc="center",bbox_to_anchor=(1.12,0.5))
plt.show()
#size es el tama帽o de los markers que tengo y size me reprecenta el numero de comenzales 
#aca puedo hacer los analisis a nivel de grafico desde mi scatteplot 
________________________________________
[7]
0 s
markers = {"Lunch":"D", "Dinner":"s"}
plt.figure(figsize=(8,8))
sns.scatterplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size",markers=markers)
plt.legend(loc="center",bbox_to_anchor=(1.12,0.5))
plt.show()
#scatterplot en searbon se manejan propiedades bastente utiles y custumisables
#aca tengo lo mismo que en el grafico anterior pero aca lo estoy predefiniendo 
________________________________________
hay otro grafico bastante 煤til que tambi茅n me sirve para ver relaciones, es algo un poco m谩s complicado de analizar, pero es bastante 煤til
________________________________________
[ ]
sns.lineplot(data=tips,x="total_bill",y="tip")
plt.show()
#esta grafica nos muetra una linea que es muy dificil de analisar, pero tambiem me muetra la relacion entre la cuenta y propinas 
________________________________________
[9]
plt.figure(figsize=(8,8))
sns.lineplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size")
plt.legend(loc="center",bbox_to_anchor=(1.12,0.5))
plt.show()
________________________________________
[12]
0 s
plt.figure(figsize=(8,8))
sns.relplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size")
plt.show()
________________________________________
[13]
plt.figure(figsize=(8,8))
sns.relplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size",col="time")
plt.show()
#relplot es un grafico bastente poderoso y util y es muy usado en la actualidad
________________________________________
[17]
0 s
plt.figure(figsize=(8,8))
sns.relplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size",col="time",kind="scatter")
plt.show()
________________________________________
[18]
0 s
plt.figure(figsize=(8,8))
sns.relplot(data=tips,x="total_bill",y="tip",hue="day",style="time",size="size",col="time",kind="line")
plt.show()
________________________________________
[25]
3 s
sns.pairplot(data=tips,hue='day')
plt.show() 
________________________________________


reto


Graffiti.

Mi soluci贸n al reto de clase, utilizando el comando kind en relplot:

sns.relplot(data= tips, x= 'total_bill', y = 'tip', hue = 'day', style='time', size= 'size', kind='line')
plt.show()

Para controlar el 谩rea de los marcadores podemos usar el par谩metro sizes, el cual se indica como tupla. Entre mayor sea el intervalo, mayor el tama帽o de los marcadores:

plt.figure(figsize=(8,6))
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='day',
                size='size', sizes=(20,300), legend = 'full',
                palette='deep');
plt.legend(loc='center', bbox_to_anchor=(1.12, 0.5));

Mi aporte de la clase: kind=鈥榣ines鈥

Reto

Desafio de la clase:

sns.relplot(data=tips, x='total_bill', y='tip', hue='day', style='time', size='size', kind='line') # Dificil de analizar, pero tmb nos muestra la relaci贸n entre una variable numerica y otra
plt.legend(loc='center', bbox_to_anchor=(1.15,0.47))
plt.show()

Reto cambiando kind con las columnas.

Otros ejemplos Graficos