Gráficos de apilamiento y gráficos de flujo de Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, aprenderá a usar Matplotlib para crear gráficos de apilamiento y gráficos de flujo. Los gráficos de apilamiento son útiles cuando desea visualizar múltiples conjuntos de datos como áreas apiladas verticalmente. Los gráficos de flujo son una variación de los gráficos de apilamiento donde la línea base del gráfico no está fija en cero. En cambio, la línea base "se mueve" de modo que las áreas del gráfico se suavicen y fluyan una en otra.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas

El primer paso es importar las bibliotecas necesarias, que en este caso son Matplotlib y NumPy.

import matplotlib.pyplot as plt
import numpy as np

Crear gráfico de apilamiento

El segundo paso es crear un gráfico de apilamiento utilizando la función stackplot(). Utilizaremos datos de las Perspectivas de la población mundial de las Naciones Unidas (Revisión 2019) para crear un gráfico de apilamiento de la población mundial por continente de 1950 a 2018.

## data from United Nations World Population Prospects (Revision 2019)
## https://population.un.org/wpp/, license: CC BY 3.0 IGO
year = [1950, 1960, 1970, 1980, 1990, 2000, 2010, 2018]
population_by_continent = {
    'africa': [228, 284, 365, 477, 631, 814, 1044, 1275],
    'americas': [340, 425, 519, 619, 727, 840, 943, 1006],
    'asia': [1394, 1686, 2120, 2625, 3202, 3714, 4169, 4560],
    'europe': [220, 253, 276, 295, 310, 303, 294, 293],
    'oceania': [12, 15, 19, 22, 26, 31, 36, 39],
}

fig, ax = plt.subplots()
ax.stackplot(year, population_by_continent.values(),
             labels=population_by_continent.keys(), alpha=0.8)
ax.legend(loc='upper left', reverse=True)
ax.set_title('World population')
ax.set_xlabel('Year')
ax.set_ylabel('Number of people (millions)')

plt.show()

Crear gráfico de flujo

El tercer paso es crear un gráfico de flujo utilizando la función stackplot() con el parámetro baseline establecido en 'wiggle'. Crearemos una mezcla aleatoria de Gaussianas y las representaremos como un gráfico de flujo.

## Fixing random state for reproducibility
np.random.seed(19680801)


def gaussian_mixture(x, n=5):
    """Return a random mixture of *n* Gaussians, evaluated at positions *x*."""
    def add_random_gaussian(a):
        amplitude = 1 / (.1 + np.random.random())
        dx = x[-1] - x[0]
        x0 = (2 * np.random.random() -.5) * dx
        z = 10 / (.1 + np.random.random()) / dx
        a += amplitude * np.exp(-(z * (x - x0))**2)
    a = np.zeros_like(x)
    for j in range(n):
        add_random_gaussian(a)
    return a


x = np.linspace(0, 100, 101)
ys = [gaussian_mixture(x) for _ in range(3)]

fig, ax = plt.subplots()
ax.stackplot(x, ys, baseline='wiggle')
plt.show()

Resumen

¡Felicidades! Has aprendido cómo crear gráficos de apilamiento y gráficos de flujo utilizando Matplotlib. Los gráficos de apilamiento son útiles para visualizar múltiples conjuntos de datos como áreas apiladas verticalmente, mientras que los gráficos de flujo son una variación de los gráficos de apilamiento donde la línea base "se mueve" de modo que las áreas del gráfico se suavicen y fluyan una en otra.