La clase Sankey #

Demuestre la clase Sankey produciendo tres diagramas básicos.

import matplotlib.pyplot as plt

from matplotlib.sankey import Sankey

Ejemplo 1: en su mayoría valores predeterminados

Esto demuestra cómo crear un diagrama simple llamando implícitamente al método Sankey.add() y agregando finish() a la llamada a la clase.

Sankey(flows=[0.25, 0.15, 0.60, -0.20, -0.15, -0.05, -0.50, -0.10],
       labels=['', '', '', 'First', 'Second', 'Third', 'Fourth', 'Fifth'],
       orientations=[-1, 1, 0, 1, 1, 1, 0, -1]).finish()
plt.title("The default settings produce a diagram like this.")
La configuración predeterminada produce un diagrama como este.
Text(0.5, 1.0, 'The default settings produce a diagram like this.')

Aviso:

  1. Los ejes no se proporcionaron cuando se creó una instancia de Sankey(), por lo que se crearon automáticamente.

  2. El argumento de escala no era necesario ya que los datos ya estaban normalizados.

  3. De forma predeterminada, las longitudes de las rutas están justificadas.

Ejemplo 2

Esto demuestra:

  1. Establecer un camino más largo que los otros

  2. Colocar una etiqueta en el medio del diagrama.

  3. Usando el argumento de escala para normalizar los flujos

  4. Pasar implícitamente argumentos de palabras clave a PathPatch()

  5. Cambiar el ángulo de las puntas de flecha

  6. Cambiar el desplazamiento entre las puntas de los caminos y sus etiquetas

  7. Dar formato a los números en las etiquetas de ruta y la unidad asociada

  8. Cambiar la apariencia del parche y las etiquetas después de crear la figura

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
                     title="Flow Diagram of a Widget")
sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180,
                format='%.0f', unit='%')
sankey.add(flows=[25, 0, 60, -10, -20, -5, -15, -10, -40],
           labels=['', '', '', 'First', 'Second', 'Third', 'Fourth',
                   'Fifth', 'Hurray!'],
           orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0],
           pathlengths=[0.25, 0.25, 0.25, 0.25, 0.25, 0.6, 0.25, 0.25,
                        0.25],
           patchlabel="Widget\nA")  # Arguments to matplotlib.patches.PathPatch
diagrams = sankey.finish()
diagrams[0].texts[-1].set_color('r')
diagrams[0].text.set_fontweight('bold')
Diagrama de flujo de un widget

Aviso:

  1. Dado que la suma de los flujos es distinta de cero, el ancho del tronco no es uniforme. El sistema de registro matplotlib registra esto en el nivel DEBUG.

  2. El segundo flujo no aparece porque su valor es cero. Nuevamente, esto se registra en el nivel DEBUG.

Ejemplo 3

Esto demuestra:

  1. Conexión de dos sistemas

  2. Desactivar las etiquetas de las cantidades

  3. Agregar una leyenda

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Two Systems")
flows = [0.25, 0.15, 0.60, -0.10, -0.05, -0.25, -0.15, -0.10, -0.35]
sankey = Sankey(ax=ax, unit=None)
sankey.add(flows=flows, label='one',
           orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0])
sankey.add(flows=[-0.25, 0.15, 0.1], label='two',
           orientations=[-1, -1, -1], prior=0, connect=(0, 0))
diagrams = sankey.finish()
diagrams[-1].patch.set_hatch('/')
plt.legend()
dos sistemas
<matplotlib.legend.Legend object at 0x7f2cdd75b5e0>

Observe que solo se especifica una conexión, pero los sistemas forman un circuito ya que: (1) las longitudes de los caminos están justificadas y (2) la orientación y el orden de los flujos están reflejados.

Referencias

En este ejemplo se muestra el uso de las siguientes funciones, métodos, clases y módulos:

Tiempo total de ejecución del script: (0 minutos 1.040 segundos)

Galería generada por Sphinx-Gallery