¿Cómo hacer un mapa de coropletas con un control deslizante usando Plotly en Python?

Choropleth Map es un tipo de mapa temático en el que un conjunto de áreas predefinidas está coloreada o modelada en proporción a una variable estadística que representa un resumen agregado de una característica geográfica dentro de cada área. Los mapas de coropletas proporcionan una manera fácil de visualizar cómo varía una variable en un área geográfica o muestran el nivel de variabilidad dentro de una región.

Los controles deslizantes se pueden usar en plotly para cambiar los datos que se muestran o el estilo de un gráfico. Es una herramienta útil que se puede utilizar para mostrar los cambios en un mapa de coropletas.

Instalación

Comencemos instalando plotly:

pip install plotly

Ahora, importemos las bibliotecas necesarias.

Python3

import pandas as pd
import plotly
import numpy as np

Cargando conjunto de datos

Cargando conjunto de datos de muestra. Usaremos este conjunto de datos para trazar un mapa de coropletas.

Python3

df = pd.read_csv('https://raw.githubusercontent\
.com/plotly/datasets/master/2011_us_ag_exports.csv')
  
data = [dict(type='choropleth', 
            locations = df['code'].astype(str),
            z=df['total exports'].astype(float),
            locationmode='USA-states')]

Crear control deslizante

Ahora, construyamos nuestro control deslizante :

Python3

steps = []
  
for i in range(len(data)):
    step = dict(method='restyle',
                args=['visible', [False] * len(data)],
                label='Year {}'.format(i + 1980))
    step['args'][1][i] = True
    steps.append(step)
  
sliders = [dict(active=0, pad={"t": 1}, steps=steps)]

Código final con salida

Finalmente, juntemos todo el código y tracemos el mapa de coropletas con un control deslizante.

Python3

import pandas as pd
import plotly
import numpy as np
  
plotly.offline.init_notebook_mode()
  
# Reading sample data using pandas DataFrame
df = pd.read_csv('https://raw.githubusercontent.\
com/plotly/datasets/master/2011_us_ag_exports.csv')
  
data = [dict(type='choropleth',
             locations = df['code'].astype(str),
             z=df['total exports'].astype(float),
             locationmode='USA-states')]
  
# let's create some more additional, data
for i in range(5):
    data.append(data[0].copy())
    data[-1]['z'] = data[0]['z'] * np.random.rand(*data[0]['z'].shape)
  
# let's now create slider for map
steps = []
for i in range(len(data)):
    step = dict(method='restyle',
                args=['visible', [False] * len(data)],
                label='Year {}'.format(i + 1980))
    step['args'][1][i] = True
    steps.append(step)
  
slider = [dict(active=0,
                pad={"t": 1},
                steps=steps)]    
layout = dict(geo=dict(scope='usa',
                       projection={'type': 'albers usa'}),
              sliders=slider)
  
fig = dict(data=data, 
           layout=layout)
plotly.offline.iplot(fig)

Producción:

Publicación traducida automáticamente

Artículo escrito por kartikengineer2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *