43.1 Burbujas agrupadas en plotly

Si se desea agrupaciones de puntos se tiene la alternativa cluster. Pero no está definido en el geoma de go.ScatterGeo. Se utiliza, en cambio, go.ScatterMap:

import plotly.graph_objects as go
import pandas as pd
merluccius = pd.read_csv("merluccius_tmp.csv", na_filter=False)
color_map = {'Especimen_conservado': 'blue', 'Obs_humana': 'red'}
merluccius['color_code'] = merluccius['basis_record'].map(color_map)
merluccius['tooltip'] = (    "Latitud: " + merluccius['lat'].astype(str) +
    ", Longitud: " + merluccius['lon'].astype(str) +
    "<br>Localidad: " + merluccius['localidad'] +
    "<br>Tipo de registro: " + merluccius['basis_record'] +
    "<br>Número de individuos: " + merluccius['conteo'].astype(str))
sizeref = 2.0 * merluccius['conteo'].max() / (15**2)
center = dict(lat=float(merluccius['lat'].mean()),
              lon=float(merluccius['lon'].mean()))
fig_mapa = go.Figure()
trace = go.Scattermap(
    lon = merluccius['lon'],
    lat = merluccius['lat'],
    text = merluccius['tooltip'],
    hoverinfo = 'text',
    mode = 'markers',
    marker = dict(
        size = merluccius['conteo'],
        color = merluccius['color_code'],
        opacity = 0.6,
        sizemode = 'area',
        sizeref = sizeref,
        sizemin = 3),
    cluster = dict(enabled = True,
        step=[2, 5, 10], 
        size=[8, 12, 18, 26],
        opacity = [0.5, 0.55, 0.6, 0.65],
        color=["#c6dbef", "#9ecae1", "#6baed6", "#3182bd"],
        maxzoom=6),
    name = "Registros")
layout = go.Layout(title = "Distribución de la merluza europea",
    height = 600,
    mapbox = dict(style = "open-street-map",
        center = center, zoom = 2),
    margin = dict(l=0, r=0, t=50, b=0))
fig_mapa = go.Figure(data=[trace], layout=layout)
  • step = 5, como entero, indica cada cuánto se genera un nivel de agrupamiento: \(50, 100, 150\), etc… step = [2, 5, 10], como lista, indica el límite inferior de cada nivel de agrupamiento, que se extiende “hasta uno menos que el siguiente valor”: \(1\) a \(19\), \(20\) a \(39\), \(40\) a \(99\), más de \(100\dots\)

  • maxzoom=6 indica a qué nivel de zoom debe desactivarse el agrupamiento

  • size=[8, 12, 18, 26] y color=["#c6dbef", "#9ecae1", "#6baed6"]es el tamaño y el color de los círculos, por nivel de agrupamiento.