Visualización de datos en Seaborn —#

  • 0:00 min | Última modificación: Octubre 13, 2021 | [YouTube]

[1]:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

Carga del dataset de prueba#

[2]:
#
# Los datasets están disponibles en:
# https://github.com/mwaskom/seaborn-data
#
# Ejemplos:
#   * 'mpg
#   * 'titanic'
#   * 'tips'
#   * 'flights'
#   ...
#
tips = sns.load_dataset('tips')
tips.head()
[2]:
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4

Clasificación por el tipo de análisis#

relplot (relacional) <— Figure level

  • scatterplot

  • lineplot

displot (distribuciones) <— Figure level

  • histplot

  • kdeplot

  • ecdfplot

  • rugplot

catplot (categoricas) <— Figure level

  • stripplot

  • swarmplot

  • boxplot

  • violinplot

  • pointplot

  • barplot

Preparación de una gráfica#

[3]:
#
# Note que esta es una gráfica hecha en Matplotlib
#
def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)

Creación de la figura#

[4]:
#
# Opciones para set_style:
#
#   * "whitegrid"
#   * "white"
#   * "dark"
#   * "white"
#   * "ticks"
#
sns.set_style('ticks')

#
# Opciones de set_context
#
#   * "paper"
#   * "notebook"
#   * "talk"
#   * "poster"
#
sns.set_context("talk")


#
# Realiza el gráfico
#
sinplot()

#
# Se remueven los ejes
#
sns.despine()
plt.show()
../../_images/02_seaborn_notebooks_1-10_visualizacion_en_seaborn_11_0.png
[5]:
sns.set_style("ticks")
sinplot()
sns.despine(
    offset=10,
    trim=True,
    left=True,
    right=False,
)
plt.show()
../../_images/02_seaborn_notebooks_1-10_visualizacion_en_seaborn_12_0.png

Paletas de colores disponibles#

[6]:
sns.color_palette()
[6]:
[7]:
sns.color_palette(
    "pastel",
    14, # número de colores de la paleta
)
[7]:
[8]:
sns.color_palette(
    "husl",
    12,
)
[8]:
[9]:
sns.color_palette("Set2")
[9]:
[10]:
sns.color_palette("flare")
[10]:
[11]:
#
# Tambien se puede indicar una paleta disponible
# en Matplotlib como un colormap:
#
# https://matplotlib.org/stable/tutorials/colors/colormaps.html
#
sns.color_palette("viridis")
[11]:
[12]:
sns.color_palette("Greys")
[12]:

Creación de varias graficas en una misma figura#

[13]:
#
# Gráficas usando subplots de Matplotlib
# ===============================================
# Las figuras son rectangulares
#
penguins = sns.load_dataset("penguins")

sns.set_context("notebook")

f, axs = plt.subplots(
    1,
    2,
    figsize=(12, 4),
    gridspec_kw=dict(
        width_ratios=[4, 3],
    ),
)

sns.scatterplot(
    data=penguins,
    x="flipper_length_mm",
    y="bill_length_mm",
    hue="species",
    ax=axs[0],
)

sns.histplot(
    data=penguins,
    x="species",
    hue="species",
    shrink=0.8,
    alpha=0.8,
    legend=False,
    ax=axs[1],
)

plt.xticks(rotation=90)

f.tight_layout()
../../_images/02_seaborn_notebooks_1-10_visualizacion_en_seaborn_22_0.png

Personalización a nivel de figura#

[14]:
g = sns.relplot(
    data=penguins,
    x="flipper_length_mm",
    y="bill_length_mm",
    col="sex",
)

g.set_axis_labels(
    "Flipper length (mm)",
    "Bill length (mm)",
)

g.fig.suptitle(
    "Data Distribution",
    y=1.05,
)

g.set_titles("--> {col_name} <--")

plt.show()
../../_images/02_seaborn_notebooks_1-10_visualizacion_en_seaborn_24_0.png