Cómo crear un mapa geográfico con zonas de calor desde Excel

Imaginemos un sitio web de venta de boletos para autobuses, y necesitamos saber los destinos favoritos por región de origen. Una tabla es útil, pero es mucho mejor un mapa geográfico con zonas de calor para ver las regiones más populares.

Estos mapas sirven para observar la interacción de dos regiones: origen y destino. Se pueden utilizar en empresas de transporte y logística, agencias viajes, o incluso para medir el rendimiento geográfico de campañas de Adwords. Geo Chart de Google es gratis y una buena opción para realizar estos mapas.

Geochart utiliza un código Javascript donde insertamos los valores numéricos asociados a cada región. En este código Javascript se definen criterios del mapa, como su nivel geográfico y su nivel de resolución (continentes, países, provincias, ciudades), y los colores que más nos gusten.

Observa este mapa con las regiones de España, y mira el código HTML para entender cómo se insertan los valores numéricos por región. Lo más recomendable es utilizar el código ISO 3166-2 para identificar cada región española.

Podemos automatizar el proceso si creamos un código dinámico en PHP para recuperar los valores directamente desde la URL, mediante $_GET, y reescribir el código Javascript que utilizará Google. Así, obtenemos un mapa geográfico dinámico, cuyas zonas de calor cambiarán según los valores que insertemos en la URL. Os muestro un sencillo ejemplo, cuya URL podéis modificar para crear vuestros propios mapas de España:

http://www.danielpinero.com/demo.php?demo=mapa&ES-IB=1&ES-MD=0&ES-RI=0&ES-AS=2&ES-CB=1&ES-CE=0&ES-ML=0&ES-CN=0&AD=0&ES-AN=8&ES-AR=0&ES-CM=3&ES-CL=8&ES-CT=1&ES-EX=0&ES-GA=2&ES-MC=0&ES-NC=1&ES-PV=0&ES-VC=0

En este primer ejemplo, Islas Baleares (ES-IB, en ISO 3166-2) tiene un valor de 1, mientras que Castilla y León (ES-CL) tiene 8. ¿Ves como Castilla y León se observa más oscura? Cambia los números en la URL, y mira cómo cambia el mapa.

Si deseamos conseguir este mapa desde Excel, hay una solución muy simple: construir la URL a partir de una lista de regiones y números, y visitarla en el browser. Descarga el ejemplo en Excel completo

Una segunda opción es utilizar Phil Carto. Es más customizable que Geo Chart, pero más complicado de descargar, instalar y usar. Además requiere buscar mapas en formato .ai, los cuales pueden tener problemas por ser diseñados por anónimos.

Código PHP definitivo para crear un mapa con Google GeoCharts (requiere añadir los valores a la URL):

  

<?php

$array = array("ES-IB" => "Islas Baleares", "ES-MD" => "Madrid", "ES-NC" => "Navarra", "ES-RI" => "La Rioja", "ES-AS" => "Asturias", 
    "ES-CB" => "Cantabria", "ES-CE" => "Ceuta", "ES-ML" => "Melilla", "ES-CN" => "Canarias", "AD" => "Andorra", "ES-AN" => "Andalucía", "ES-AR" => "Aragón", 
    "ES-CM" => "Castilla-La Mancha", "ES-CL" => "Castilla y León", "ES-CT" => "Cataluña", "ES-EX" => "Extremadura", "ES-GA" => "Galicia", "ES-MC" => "Murcia", 
    "ES-PV" => "País Vasco", "ES-VC" => "Valencia");

    $serie = "";

    foreach ($array as $iso => $name) {
     if (isset($_GET[$iso]) && !empty($_GET[$iso]) ) {
     $value=$_GET[$iso];
     $serie .= "[{f: '".htmlentities($name)."', v: '".htmlentities($iso)."'},".htmlentities($value)."], ";
        }
     }

    $serie = substr($serie, 0, -2); ?>

    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='es' lang='es'>
    <head>
	<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
      <script type='text/javascript' src='https://www.google.com/jsapi'></script>
      <script type='text/javascript'>
       google.load('visualization', '1', {'packages': ['geochart']});
       google.setOnLoadCallback(drawRegionsMap);

        function drawRegionsMap() {
          var data = new google.visualization.DataTable();
          data.addColumn('string', 'Country');
          data.addColumn('number', 'Popularity');
    data.addRows([<?=$serie;?>]);

          var options = {'title':'Spain',
      'width':650, 'height':400, 'region':'ES', 'resolution':'provinces'};

          var container = document.getElementById('map_canvas');
          var geochart = new google.visualization.GeoChart(container);
          geochart.draw(data, options);
      };
      </script>
    </head>

    <body>
      <div id='map_canvas'></div>
    </body>

    </html>

 
Escribe tu comentario comment4 Comentarios
  1. 2016-11-06 Anel Trujillo

    Buena la ilustración, pero no tengo el programa y quisiera saber si es algún programa especial.

    • 2016-11-06 Daniel Piñero

      Usamos la API de Google Charts. En mi sitio web, podrás encontrar varias interfaces para generar mapas de varios países.

    2016-03-18 Daiana

    Sabes cómo hacemos para que se pinten Ceuta y Melilla?

    2014-08-05 Patricia Quiquia

    Deberías colgar un ejemplo con la ciudad de Lima - Perú :D

    2011-12-16 Alex

    El problema es que parece que para Google las provincias son las comunidades y no permite un mapa por provincias de España, Lástima.

    • 2012-04-12 Daniel Piñero

      Sí, ése es un problema que también encontré al investigar sobre Geo Charts. En la plataforma estadística de la empresa donde trabajo, la solución ha sido utilizar un pie chart para las provincias, y un mapa para las comunidades. También creo que un mapa para las 50 provincias de España sería demasiado granular y más difícil de entender en ciertos casos. Para entrar en detalle, podemos acompañar el mapa con un pie chart o una tabla que desglose los datos por provincias.

mode_editEscribe tu comentario

menu
menu