Son adecuados para visualizar datos con secuencialidad temporal, como las series de tiempo.
Se grafican con el método ax.plot(x, y)
En caso de no especificarse x, matplotlib toma como coordenadas en x al arreglo de números enteros [0, 1, 2, …, n]
Ejemplo
fig, ax = plt.subplots()
ax.plot([0, 1, 2, 3, 4, 5, 6], [1, 5, 2, 4, 8, 9, 2])
En ocasiones necesitamos resaltar ciertas características de los datos.
Por ejemplo, ¿Qué pasa si quisiéramos resaltar el punto máximo en una serie de tiempo?
¿Podemos cargar al objeto ax con múltiples elementos para que los muestre todos juntos?
Ejemplo
Primero, comparemos las precipitaciones de Enero y Febrero en el mismo objeto ax.
Luego, Con una agregación, calculamos el máximo de cada uno
El método axhline permite graficar líneas horizontales. Usemos esto para resaltar los máximos de cada serie de tiempo
También se puede graficar líneas verticales con el método axvline
Por último, las etiquetas
fig, ax = plt.subplots(figsize=(12, 3))
ax.plot(df_lluvias.index, df_lluvias['Jan'], label='Precipitaciones de enero')
ax.plot(df_lluvias.index, df_lluvias['Feb'], label='Precipitaciones de febrero', color='C1')
maximo_enero = df_lluvias['Jan'].max()
maximo_febrero = df_lluvias['Feb'].max()
ax.axhline(maximo_enero, color='red', linestyle='--', alpha=0.5, linewidth=3, label='Máxima de enero')
ax.axhline(maximo_febrero, color='red', linestyle=':', alpha=0.5, linewidth=3, label='Máxima de febrero')
ax.set_xlabel('Año')
ax.set_ylabel('Precipitación (mm.)')
ax.set_title('Precipitaciones de enero y febrero')
ax.set_xlim(df_lluvias.index[0], df_lluvias.index[-1]) # Límite en el eje x
ax.legend()
Se utiliza para visualizar la relación entre las dos variables.
Por ej. si una variable crece y la otra decrece o crecen las dos
Se pueden conocer como scatterplot.
Si el valor a lo largo del eje Y parece aumentar a medida que aumenta (o disminuye) el eje X, podría indicar una relación lineal positiva (o negativa).
Si los puntos se distribuyen al azar sin un patrón obvio, (posiblemente falta de relación de dependencia).
Útiles cuando se tienen una gran cantidad de datos numéricos emparejados
Permiten visualizar la relación entre las variables por medio de la nube de puntos
Nube de puntos “alineada” = relación fuerte
Nube de puntos “dispersa” = relación débil o nula
Se grafican con ax.scatter
Ejemplo
pesos = [42.8, 43.3, 42. , 44. , 44.1, 43.5, 48.1, 48.9, 47.7,46.9,50.4,
52.7, 51.8, 54.5, 54.2, 56.9, 55.4, 55.5, 57.1, 58.3, 63.7, 58.8,
64.6, 60.2, 64. , 63.8, 61.4, 66.3, 64.7, 63.9, 69.3, 67.9, 65.2,
70.8, 70.5, 69.3, 75.3, 75.5, 78.2, 78. , 73.2, 78. , 80.1, 78.2,
76. , 81.5, 79.4, 81.8, 81.8, 84.1]
alturas = [149. , 149. , 149.9, 156.8, 150.6, 155.4, 151. , 162. , 165.,
157.8, 164.4, 160.1, 160.8, 163.8, 175.2, 162. , 159.5, 159.2,
169.8, 166.7, 179.4, 180.6, 163.3, 178.8, 176.3, 184.8, 181. ,
170.5, 184.1, 187.1, 187.1, 177.7, 184.5, 190.3, 196. , 192.1,
200.4, 201.8, 187.5, 202.1, 200.3, 208.8, 204.6, 193.5, 200.9,
196.8, 213.1, 204.8, 215.5, 210.2]
fig, ax = plt.subplots()
ax.scatter(alturas, pesos, alpha=0.7)
ax.set_title('Altura vs. Peso de 50 alumnos')
ax.set_xlabel('Altura (cm.)')
ax.set_ylabel('Peso (kg.)')
Ejemplo 2 Ver si existe correlación entre las precipitaciones presentes en los meses de Agosto y Septiembre.
fig, ax = plt.subplots()
mapeo_colores = ax.scatter(df_lluvias['Aug'], df_lluvias['Sep'], c=df_lluvias.index)
fig.colorbar(mapeo_colores)
ax.set_title('Precipitaciones Agosto-Septiembre')
ax.set_xlabel('Precipitaciones en Agosto (mm.)')
ax.set_ylabel('Precipitaciones en Septiembre (mm.)')
Un diagrama de barras muestra datos categóricos como barras rectangulares con alturas proporcionales al valor que representan.
Una variable categórica no es más que una agrupación de datos en diferentes grupos lógicos, por ejemplo, datos sobre la altura de las personas que se agrupan como "Alto", "Medio", "Bajo", etc.
Permiten comparar y poner en perspectiva los valores de distintas variables categóricas. Por ejemplo, las precipitaciones según el mes del año.
Para el ejemplo, acumulemos las precipitaciones para los distintos meses a lo largo de los años.
Ejemplo
precipitaciones_acumuladas = df_lluvias.sum()
precipitaciones_acumuladas
Jan 11.186
Feb 41.843
Mar 63.733
Apr 470.487
May 952.272
Jun 12809.663
Jul 16340.395
Aug 10529.357
Sep 7642.245
Oct 2783.320
Nov 958.492
Dec 230.646
dtype: float64
fig, ax = plt.subplots(figsize=(8,4))
ax.bar(df_lluvias.columns, precipitaciones_acumuladas)
ax.set_title('Precipitaciones acumuladas desde 1965 a 2002, según el mes')
ax.set_ylabel('Precipitación total (mm.)')
ax.set_xlabel('Mes')
Un histograma es una gráfica de la distribución de frecuencia de una matriz numérica dividiéndola en pequeños contenedores de igual tamaño (bins).
La altura de cada barra representa la proporción o cantidad de los distintos valores de una variable numérica.
Requiere clasificar a los datos en intervalos de clase.
Permiten comparar la frecuencia relativa o absoluta de cada intervalo.
Se construyen con ax.hist, que recibe como parámetro:
El arreglo de valores.
bins, que representa la cantidad de intervalos a construir.
Ejemplo
Aplanemos los valores del Data Frame con el método flatten
df_lluvias.values.flatten() # Ordena todo de mayor a menor y es como si pegara una fila atrás de otra.
3.34300e+00, 1.26000e-01, 6.86000e+00, 3.42324e+02, 4.03925e+02,
4.51153e+02, 4.40381e+02, 1.90840e+01, 1.01597e+02, 8.00000e-03,
8.00000e-03, 0.00000e+00, 8.32900e+00, 2.87640e+01, 4.81600e+00,
3.49975e+02, 3.44268e+02, 4.04191e+02, 9.41270e+01, 1.08260e+01,..........
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(df_lluvias.values.flatten(), bins=10)
ax.set_title('Histograma de precipitaciones')
ax.set_xlabel('Intervalos de precipitaciones (mm.)')
ax.set_ylabel('Frecuencia absoluta')
Puede que visualicemos un error
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(df_lluvias.values.flatten(), bins=150) # No abusar de poner muchos bins porque no tiene sentido la gráfica
ax.set_title('Histograma de precipitaciones')
ax.set_xlabel('Intervalos de precipitaciones (mm.)')
ax.set_ylabel('Frecuencia absoluta')
El diagrama de caja es un método para mostrar gráficamente la distribución de una variable numérica a través de los cuartiles.
Permite identificar la presencia de atípicos y outliers
También permite comparar la distribución de una variable númerica entre categorías
Ejemplo
Creemos un boxplot de precipitaciones mensuales
fig, ax = plt.subplots(figsize=(8, 4))
ax.boxplot(x=df_lluvias)
ax.set_title('Boxplot de precipitaciones')
ax.set_xlabel('Meses')
ax.set_ylabel('Precipitacion (mm)')
Un Piechart solo puede mostrar una serie de datos.
Los gráficos circulares muestran el tamaño de los elementos denominados cuñas (wedges) en una serie de datos, proporcional a la suma de los elementos.
Los puntos de datos en un gráfico circular se muestran como un porcentaje del pastel completo.
Ejemplo
cars = ['AUDI', 'BMW', 'FORD',
'TESLA', 'JAGUAR', 'MERCEDES']
data = [23, 17, 35, 29, 12, 41]
fig,ax = plt.subplots(figsize =(10, 7))
ax.pie(data, labels = cars,)
Creemos un piechart de precipitaciones mensuales
fig,ax = plt.subplots(figsize =(10, 7))
ax.pie(df_lluvias.sum(), labels = df_lluvias.sum().index,)
plt.show()