Las librerías matplotlib sirve para poder pintar gráficos con datos obtenidos de dataframes, por ejemplo. La librería seaborn está basada en matplotlib y es una versión más avanzada de ésta:
Vamos a ver unos ejemplos de código:
## LIBRERÍAS MATPLOTLIB Y SEABORN ##
# Importamos las librerías:
import pandas as pd
import numpy as np
import matplotlib as mpl
import seaborn as sns
# Hacemos que se muestren los gráficos al crearlos para no tener que abrirlos a parte:
%matplotlib inline
## Histogramas (gráficos de barras) ##
# Generamos 100 valores al azar siguiendo una distribución normal con media 0 y desviación típica 1:
datos1 = np.random.randn(100)
# Generamos un histograma básico (librería matplotlib) con los datos generados anteriormente:
mpl.pyplot.hist(datos1)
# Generamos un histograma básico (librería seaborn) con los datos generados anteriormente:
sns.distplot(datos1)
# Generamos el mismo histograma pero cambiando el color de la gráfica:
sns.distplot(datos1, color = "green")
# Generamos el mismo histograma pero aumentando la intensidad del color:
mpl.pyplot.hist(datos1, color = "green", alpha = 0.8)
# Generamos el mismo histograma pero indicando que queremos que se formen 20 barras en el eje x:
mpl.pyplot.hist(datos1, color = "green", alpha = 0.8, bins = 20)
# Creamos otro conjunto de datos y mostramos ambos en un mismo histograma, cada uno de un color diferente:
datos2 = np.random.randn(100)
mpl.pyplot.hist(datos1, color = "green", alpha = 0.4, bins = 20)
mpl.pyplot.hist(datos2, color = "yellow", alpha = 0.4, bins = 20)
# Hacemos lo mismo pero con la librería seaborn, también se mostrará una gráfica de puntos:
sns.jointplot(datos1, datos2)
# Hacemos lo mismo pero cambiando los puntos por hexágonos de densidad, que se ve más claro:
sns.jointplot(datos1, datos2, kind = "hex")
# Generamos el histograma con seaborn pero sin mostrar las barras, únicamente con la línea (Kernel density estimation):
sns.distplot(datos1, color = "green", rug = False, hist = False)
# Generamos el mismo histograma, pero poniendo diferentes colores a la curva y a las barras:
argumentosCurva = {'color':'black', 'label':'Curva'}
argumentosHistograma = {'color':'grey', 'label':'Histograma'}
sns.distplot(datos1, bins = 25, kde_kws = argumentosCurva, hist_kws = argumentosHistograma)
# Creamos una serie con los datos generados y comprobamos que también sirve para crear un histograma:
serie = pd.Series(datos1)
sns.distplot(serie, bins = 25, color = "green")
# Documentación adicional sobre histogramas:
https://seaborn.pydata.org/tutorial/distributions.html
## Gráficos de caja ##
# Generamos 100 valores al azar siguiendo una distribución normal con media 0 y desviación típica 1:
datos = np.random.randn(100)
# Generamos el diagrama de caja:
sns.boxplot(datos)
## Regresiones lineales ##
# Creamos un dataframe a partir de un dataset que trae por defecto la librería seaborn para practicar:
propinas = sns.load_dataset('tips')
# Creamos una gráfica de regresión lineal entre dos campos del dataframe anterior:
sns.lmplot('total_bill', 'tip', propinas)
# Generamos la misma gráfica pero cambiando el color de los puntos y la línea:
sns.lmplot('total_bill', 'tip', propinas, scatter_kws = {'color':'green'}, line_kws = {'color':'blue'})
# Generamos la misma gráfica pero mostrando sólo los puntos y eliminando la línea:
sns.lmplot('total_bill', 'tip', propinas, fit_reg = False)
# Creamos una columna nueva en el dataframe que sea el porcentaje de la propina sobre la factura total:
propinas['porcentaje'] = 100 * propinas['tip'] / propinas['total_bill']
# Creamos otra gráfica de regresión lineal, esta vez entre el campo nuevo creado (porcentaje) y entre el número de personas en mesa:
sns.lmplot('size', 'porcentaje', propinas)
# Creamos otra regresión lineal entre la factura total y el porcentaje, pero esta vez dividiendo los puntos en distintos colores y marcadores dependiendo del sexo:
sns.lmplot('total_bill', 'porcentaje', propinas, hue = 'sex', markers = ['x', 'o'])
# Creamos la misma regresión lineal, pero dividiendo los datos por día de la semana en lugar de por sexo:
sns.lmplot('total_bill', 'porcentaje', propinas, hue = 'day')
## Mapas de calor (Heatmap) ##
# Creamos un dataframe a partir de un dataset que trae por defecto la librería seaborn para practicar:
vuelos = sns.load_dataset('flights')
# Creamos una matriz de datos a partir del dataframe anterior para poder crear un mapa de calor:
vuelos = vuelos.pivot('month', 'year', 'passengers')
# Hemos utilizado la columna 'month' como filas, 'year' como columnas, y 'passengers' como datos.
# Creamos el heatmap con la matriz de vuelos:
sns.heatmap(vuelos)
# Creamos el mismo heatmap pero hacemos que muestre los valores en cada zona:
sns.heatmap(vuelos, annot = True, fmt = 'd')
# Creamos el mismo heatmap, pero establecemos el valor de Mayo de 1956 como valor central del color a partir del cual se mostrarán todos los demás colores:
valorCentral = vuelos.loc['May'][1956]
sns.heatmap(vuelos, center = valorCentral, annot = True, fmt = 'd')
# Creamos el mismo heatmap, pero cambiando la posición de la barra de calores a la parte inferior de la gráfica:
sns.heatmap(vuelos, center = valorCentral, annot = True, fmt = 'd', cbar_kws = {'orientation':'horizontal'})
# Documentación adicional sobre heatmaps:
https://seaborn.pydata.org/generated/seaborn.heatmap.html
Y eso es todo.
No hay comentarios:
Publicar un comentario