martes, 12 de septiembre de 2017

R + SAGA Geoprocesamiento con RSAGA Package





En la presente entrada trataré un tema un poco diferente a lo acostumbrado, sobre todo porque será la primera vez que me refiero al Software R, al que de un tiempo muy reciente lo estoy practicando; por otro lado, aunque tampoco me acuerdo haber discutido sobre SAGA GIS específicamente, es un software del cual ya tengo muchos años trabajándolo, y en donde me siento más cómodo, sobre todo porque se complementa muy bien con el QGIS.

Bueno, en esta aventura voy a mostrar mi experiencia probando el package "RSAGA", por el que me animé luego de leer este enlace, a partir de ello, estuve revisando otras fuentes y decidí intentarlo empleando solamente una capa raster de elevación, el cual será nuestro punto de partida.

Fuente de Datos:


Para esta oportunidad como lo indicaba se empleará una capa raster tipo DEM, el cual está disponible a través del Modelo Digital de Superficie ALOS World 3D -30m (AW3D30), solamente se tienen que registrar y podrán descargar los datos, para el presente ejemplo se seleccionó la zona que comprende el Departamento de Lima-Perú.

Figura 1: DEM (30 m) de la cuenca del río Rimac 


Pasos Previos


Debemos tener en cuenta que el package "RSAGA", al parecer por temas de actualización no funciona con las últimas versiones de SAGA, por lo tanto, es recomendable instalar las versiones 2.14 o  2.2. En relación a R, se recomienda que instalen el RStudio, sobre todo para tener un entorno que nos facilite nuestro trabajo, como por ejemplo la instalación de otros paquetes adicionales requeridos.



Manos a la Obra


Paso 1: Como primer paso, una vez dentro de RStudio, debemos definir el directorio de trabajo, para ello, lo podemos hacer desde la consola con  setwd("Ruta del Directorio"), o también te puedes activar el menú de "Session", y luego dirigirte a "Choose Directory", tal como se aprecia en la figura 2.

Figura 2: Definiendo nuestro directorio de trabajo


Paso 2: Instalar y Activar el Package RSAGA

install.packages("RSAGA")
library ("RSAGA")

Paso 3: Quizás el más importante, porque ahora debemos establecer un ambiente en R. La finalidad es poder usar el objeto, en este caso "env_test" para dirigir las funciones RSAGA. En algunos casos podemos indicar en donde tenemos ubicado nuestro software SAGA.







Paso 4: Vamos a importar nuestro archivo raster que está en formato tif (dem_rimac.tif), para convertirlo en el formato de SAGA (dem_test.sgrd)

rsaga.import.gdal("F:/WORKS/SAMPLES/rtest/dem_rimac.tif", "dem_test.sgrd", env = env_test)


Paso 5: Verificamos la lista de la librería de módulos disponibles con las que podemos trabajar, es decir, todas las herramientas que a través de SAGA podemos ejecutar dentro del ambiente de R. Para nuestro caso vamos a incidir en aquellos relacionados al análisis del territorio. Es importante revisar los nombres, porque deberán ser considerados en nuestra línea de código para cuando sea requerido un módulo en específico.

rsaga.get.libraries(path=env_test$modules)

Figura 3: Lista de la librería de módulos


Paso 6: Vamos a lista la lista de funciones de geoprocesamiento que trabajaremos, teniendo en cuenta lo remarcado en la Figura 3. Por ahora nos dedicaremos a lo relacionado a "ta_morphometry".

rsaga.get.modules(lib = "ta_morphometry", env=env_test)


Figura 4: Funciones relacionados a morfometría

Paso 7: Configurar las herramientas de geoprocesamiento llamando a los módulos dentro de la biblioteca "ta_morphometry". Se pueden emplear cualquiera de los módulos que fueron listados previamente, solo se debe cambiar en "module = _ _ ". Tener en cuenta que también se puede colocar el número de código asignado, por ejemplo para "TPI Based Landform Classification", podemos ingresar "19".

rsaga.get.usage(lib= "ta_morphometry", module = "Slope, Aspect, Curvature", env = env_test)

rsaga.get.usage(lib= "ta_morphometry", module = 19, env = env_test)


Al ejecutar tendremos una vista de la lista de los parámetros (entrada y salida) a considerar, sobre todo, es importante verificar aquí las opciones que tenemos para personalizar nuestros resultados. También nos ayuda a revisar los formatos de ingreso (si es un texto o número), las unidades con los que se trabaja y cuales son las opciones por defecto, esto en caso que no ingresemos un parámetro. Para el primero se tendrá un resultado similar al siguiente.

> rsaga.get.usage(lib= "ta_morphometry", module = "Slope, Aspect, Curvature", env = env_test)
library path: C:\PROGRA~1\SAGA-GIS\modules\
library name: ta_morphometry
library     : Morphometry
Usage: saga_cmd ta_morphometry 0 -ELEVATION [-SLOPE ] [-ASPECT ] [-C_GENE ] [-C_PROF ] [-C_PLAN ] [-C_TANG ] [-C_LONG ] [-C_CROS ] [-C_MINI ] [-C_MAXI ] [-C_TOTA ] [-C_ROTO ] [-METHOD ] [-UNIT_SLOPE ] [-UNIT_ASPECT ]
  -ELEVATION:   Elevation
Grid (input)
  -SLOPE:       Slope
Grid (output)
  -ASPECT:     Aspect
Grid (output)
  -C_GENE:     General Curvature
Grid (optional output)
  -C_PROF:     Profile Curvature
Grid (optional output)
  -C_PLAN:     Plan Curvature
Grid (optional output)
  -METHOD:     Method
Choice
Available Choices:
[0] maximum slope (Travis et al. 1975)
[1] maximum triangle slope (Tarboton 1997)
[2] least squares fitted plane (Horn 1981, Costa-Cabral & Burgess 1996)
[3] 6 parameter 2nd order polynom (Evans 1979)
[4] 6 parameter 2nd order polynom (Heerdegen & Beran 1982)
[5] 6 parameter 2nd order polynom (Bauer, Rohdenburg, Bork 1985)
[6] 9 parameter 2nd order polynom (Zevenbergen & Thorne 1987)
[7] 10 parameter 3rd order polynom (Haralick 1983)
Default: 6
  -UNIT_SLOPE: Slope Units
Choice
Available Choices:
[0] radians
[1] degree
[2] percent
Default: 0
  -UNIT_ASPECT: Aspect Units
Choice
Available Choices:
[0] radians
[1] degree 


Paso 8: Ejecutar el Geoprocesamiento, para lo cual existen dos maneras fundamentalmente, el primero, cuando existe una función específica del RSAGA, tenemos la opción de obtener nuestro resultado. Para nuestro ejemplo, puede darse el caso que deseamos obtener la pendiente, el aspecto y la curvatura en un mismo procedimiento, para ello podemos escribir:

rsaga.slope.asp.curv("dem_test.sgrd", out.slope = "slope_dem1", out.cprof = "cprof_dem1", out.cplan = "cplan_dem1", method = "poly2zevenbergen", env=env_test)

También se pude realizar de manera individual, es decir cuando existe la función para calcula la pendiente:

rsaga.slope("dem_test.sgrd", "slope_dem2", method = "maxslope", env=env_test)

Por último existe la opción, el cual me parece más interesante, porque tenemos la posibilidad de obtener el mismo resultado si ejecutamos la función del Geoprocesador, para lo cual debemos guiarnos de lo mostrado como producto del Paso 7.

rsaga.geoprocessor(lib = "ta_morphometry", module = 0, param = list(ELEVATION = "dem_test.sgrd",SLOPE = "slope_dem3.sgrd", ASPECT = "aspect_dem2.sgrd", C_GENE= "curv_gener1.sgrd", METHOD= "0", UNIT_SLOPE="percent", UNIT_ASPECT="degree"), env = env_test)

Figura 5: Salida del Geoprocesamiento realizado


Paso 9: Ahora vamos a realizar un paso previo para lograr visualizar nuestros resultado. Como vieron en la Figura 5. los archivos se guardaron en formato de SAGA (*.sgrd), el cual lo podemos abrir no solo en ese Software, sino también en QGIS por ejemplo, pero para hacerlo más interesante lo vamos a convertir a un formato tipo ASCII (*.asc). Para ello, volvamos a revisar la Figura 3 e identifiquemos el módulo que requerimos, en este caso hablamos de "io_grid"

rsaga.get.modules(lib="io_grid", env=env_test)

Figura 6: Módulos para gestión de archivos raster


rsaga.get.usage(lib = "io_grid", module =0, env=env_test)

rsaga.geoprocessor(lib="io_grid",module=0,param=list(GRID="dem_fill1.sgrd",FILE="dem_esri.asc"),  env=env_test)


rsaga.geoprocessor(lib="io_grid",module=0,param=list(GRID="slope_dem4.sgrd",FILE="dem_slope.asc"), env=env_test)

rsaga.geoprocessor(lib="io_grid",module=0,param=list(GRID="aspect_dem4.sgrd",FILE="dem_aspect.asc"), env=env_test)


En caso se tengan muchos archivos, existe también una manera más rápida que nos permite realizar este proceso de conversión, a continuación muestro un ejemplo que logré ejecutar, considerando que estuve probando otros módulos.

rsaga.sgrd.to.esri(in.sgrds = c("cprof_dem4", "cplan_dem4", "carea1", "wetindex1", "hillshade1", "direction_dem3","connet_dem3", "order_dem3", "basin_dem3"), out.grids = c("esri_cprof", "esri_cplan", "esri_carea", "esri_wetindex", "esri_hillshade", "esri_direction", "esri_connect", "esri_order", "esri_basin"), out.path = getwd(), format = "ascii", env = env_test)

Paso 10: Vamos a definir los archivos raster para que podamos plotearlos


Es importante tener instalado y activado el Package "raster" y "sp"












plot(elevation)






plot(slope)







plot (aspect)







Visualización en Google Earth


Si bien no lo considero un paso adicional, me encontré con el siguiente enlace, a partir del cual traté de realizar el procedimiento, aunque no me siento muy satisfecho con los resultados, si alguien que lo intente a ver si le sale mejor, lo pueda compartir. En sí, primero debemos remontarnos a nuestra Figura 6, para definir nuestro módulo, en este caso será el "10", porque nuestro objetivo es convertirlo a un archivo PNG (que nos permitirá hacer transparencias).


Es importante tener instalado y activado el Package "rgdal", "maptools"

rsaga.get.modules(lib="io_grid", env=env_test)

rsaga.get.usage(lib= "io_grid", module = "10", env=env_test)


# Generando nuestro archivo tipo PNG

rsaga.geoprocessor(lib="io_grid", module=10, param=list(IMAGE="aspect_dem4.sgrd", FILE="aspect1.png"))

# Definiendo nuestro raster









# Creando nuestro objeto KML








# Creando nuestro archivo KML, con la función kmlOverlay, para mayor detalle revisar aquí.



kmlOverlay(aspect.kml, kmlfile="aspect1.kml", imagefile="aspect1.png", name="Aspecto_rimac")


Figura 7: Salida en Google Earth 


Muy bien, por mi parte seguiré investigando sobre las ventajas que se tiene el poder trabajar dentro de R, sobre todo a partir de nuestros productos obtenidos, aprovechando las ventajas de funciones estadísticas que podemos explotar. Espero que se animen a probarlo.




domingo, 3 de septiembre de 2017

Visualización y Analisis de datos de Criminalidad con QGIS






Vamos a continuar explorando herramientas que nos permiten generar gráficos que nos ayudan a un análisis de nuestros datos. En esta oportunidad emplearemos un plugin de QGIS, el cual aprovecha las ventajas de generar gráficos al estilo D3 (Data-Driven Documents), nos referimos al D3 Data Visualization - QGIS D3 Date and Time Heatmap. 


¿Qué realiza el D3 Data Visualization?


El plugin usando fecha, hora y categorías personalizadas en los datos, crea un histograma de calor circular D3, obteniéndose como salida una página web interactiva, el mismo que puede incluir una leyenda de manera opcional.

El plugin funciona contando el número de eventos por fecha / hora / categoría, usando dos ejes y muestra los resultados como un mapa de calor circular. Con el resultado obtenido nos permite analizar la distribución temporal de los datos y cuántos eventos existen a través del tiempo, basado en dos frecuencias.

Fuente de Datos


Primero vamos a preparar nuestros datos para mostrar su funcionamiento, para ello nos guiaremos principalmente de lo mostrado en su repositorio del código, desde donde podemos verificar que, para su demostración emplea una base de datos de eventos de crimen del 2006 ocurridos en la ciudad de Chicago, disponibles desde aquí; en principio lo consideraremos como nuestra capa principal, pero además, para hacerlo más interesante usaremos dos capas adicionales, el primero referido a los límites de vecindarios disponibles desde la misma fuente, el mismo se obtiene haciendo la búsqueda como "Boundaries-Neighborhoods", y finalmente una capa sobre los llamados distritos policiales (Police districts), disponibles desde aquí. Es importante mencionar que según la Figura 1, también adicioné al QGIS una capa sobre Estaciones Policiales, para quizás tener un criterio más de análisis luego de obtener mis resultados.

Figura 1: Vista del ámbito de estudio



Figura 2: Vista de los datos de crimen reportados el 2006 en Chicago



Ahora para tener nuestra capa final lista, vamos a tener que realizar el proceso de unión espacial de las capas mencionadas, el QGIS se logra con Vectorial-->Herramientas de gestión de datos-->Unir atributos por localización. Para ello tener presente que nuestra "Capa vectorial objetivo" es la de puntos que representa los eventos de crimen.


Figura 3: Tabla de atributos integrando información adicional


Conociendo el Entorno


Luego de instalar el plugin, al activarlo nos aparecerá una ventana con un grupo de pestañas, el primero de ellos "QGIS layer", la misma sirve para elegir la capa vectorial que se utilizará para generar el gráfico del mapa de calor (Chicago-2006-crime). Además, se deben seleccionar los campos de fecha y hora (Date). Se puede especificar también los valores para nuestro eje radial y la banda concéntrica, en ambos casos se debe establecer el tipo de información en base al rango de tiempo a ser establecido. Como veremos más adelante la banda concéntrica puede ser ajustado para incluir información adicional.


Figura 4: Seleccionando nuestros datos de entrada



La segunda pestaña "Titles", nos permite personalizar nuestro gráfico colocando títulos al mismo y a la leyenda si decidimos incluirla. Además se tiene la opción de incluir la posibilidad de visualizar los valores (el número de incidentes) al pasar el mouse.


Figura 5: Configurando los títulos y etiquetas del gráfico


La tercera pestaña "Settings", en donde se realiza algunas configuraciones como especificar el "Inner radius", lo que sería el radio en píxeles donde la primera banda del mapa de calor comienza, luego la altura en píxeles de cada banda (Band height), en generar nos permite definir las mejores dimensiones de nuestro gráfico para una correcta visualización; del mismo modo podemos indicarle que se muestren las etiquetas tanto de las líneas radiales como de las bandas concéntricas. Finalmente también podemos indicar las dimensiones de nuestra leyenda.

Figura 6: Ajustes de dimensiones de nuestro gráfico


La última pestaña corresponde a "Colors", en donde se realizan los ajustes para un control preciso sobre la rampa de color de nuestro mapa de calor y definimos también el color de "Sin Datos".


Figura 7: Ajustes de colores


  

Aplicación del Plugin


Vamos a realizar un ejemplo considerando contar con un gráfico que me permita ver el número de incidentes distribuido por meses y por la hora del día, para visualizar en que horarios durante todos los meses del año se producen mayor cantidad de incidentes. Para eso ingresamos en la primera pestaña la siguiente información.

Figura 8: Definición de datos a emplear en nuestro primer ejemplo


Al final tendremos el resultado mostrado en la Figura 9, determina que en el mes de enero se producen la menor cantidad de incidentes, del mismo gráfico vemos que es a la media noche en donde aumenta los incidentes. Tal como lo indicamos anteriormente, al pasar con el mouse sobre el gráfico, en la parte inferior se irá indicando la cantidad de incidentes de manera interactiva.

Figura 9: Vista del resultado de nuestro primer gráfico

Hay que tener en cuenta que el plugin te solicita una carpeta donde se almacenará el resultado, el cual como verán consta de tres archivos, desde donde también se podría hacer algunas modificaciones para mejorar nuestra salida.

Opciones  Adicionales


Vamos a manejar nuestros datos para crear gráficos más personalizados, sobre todo para emplear las capas adicionales que se integraron a nuestra data original, para ello, vamos primero a generar un filtro a nuestra capa de puntos.

Figura 10: Aplicación de filtros


Con el filtro realizado vamos a poder visualizar otro tipo de información, teniendo solo una variable de tiempo, en esta oportunidad nos interesa conocer la cantidad de incidentes clasificados por su naturaleza ocurridos durante los meses del año, para ello ajustamos las opciones como se muestra a continuación.


Figura 11: Ajustando para emplear datos adicionales



Figura 12: Resultado de nuestro ejemplo con datos filtrados

Nuestro resultado muestra que son los narcóticos el principal incidente registrando, con valores de hasta 2,452 casos, el mismo se repite con valores altos durante todos los meses, del mismo modo, vemos que lo sigue en cantidad los robos, y finalmente se puede ver que no se reportan homicidios a excepción de uno ocurrido en el mes de setiembre.

Otro ejemplo que podemos mostrar es considerando los datos de ubicación del vecindario, para ello vamos seguir el mismo procedimiento hecho recién, es decir aplicando filtros. En esta oportunidad, vamos a seleccionar al azar un grupo de vecindarios, sobre el cual pretendemos analizar. 

Lo que vamos hacer es generar primero un gráfico que me permita ver si existen vecindarios que en algunos meses del año presentan mayor cantidad de incidencias, después haremos otro gráfico que me determine en qué horarios se presentan las incidencias con mayor frecuencia por cada vecindario seleccionados.


Figura 13: Resultado final de ejemplos incorporando datos de vecindarios


Finalmente podemos apreciar de acuerdo al gráfico de la izquierda, que el vecindario "Harrinson", presenta la mayor cantidad de incidencias durante todos los meses del año, por otro lado el vecindario "Foster" se reporta la menor cantidad de incidencias, lo que se podría deducir que es uno de los más seguros. En relación al gráfico de la derecha, apreciamos que a partir de las 7:00 p.m. hasta la media noche se producen la mayor cantidad de incidentes.

Bueno, como pueden ver, se pueden realizar muchos gráficos, en este caso se consideró un ejemplo para analizar datos de criminalidad, pero el mismo puede servir para datos como por ejemplo número de accidentes, emergencias o cualquiera que contenga columna con fechas y horarios. Si bien son gráficos, considero que es un buen complemento a la realización de otros procesos de análisis de datos, el cual nos permitiría por ejemplo definir quizás personal requerido para la atención de emergencias, o la posibilidad de implementar servicios o equipos. En fin, espero que lo puedan probar.





lunes, 21 de agosto de 2017

Generando Gráficos con Data Plotly en QGIS 3











Con la finalidad de dar un poco de continuidad a la temática del post anterior, ahora voy a mostrar las experiencia de probar el plugin "DataPlotly", el cual me pareció interesante, sobre todo por su versatilidad para la generación de gráficos.

Fuente de Datos


Para demostrar las ventajas del plugin vamos a emplear los mismos datos del post anterior, pero con la diferencia que ahora se está incluyendo un campo adicional que representa los valores de altitud de los centros poblados considerados; dichos datos han sido obtenidos empleando la herramienta de análisis "Point samplig Tool", partiendo de una capa raster de altitud, el procedimiento puede ser repasado aquí.


Figura 1: Se añadió una columna con datos de altitud de centros poblados

Características del DataPlotly


Es importante mencionar que el plugin "DataPlotly" permite la creación de gráficos al estilo D3 (Data-Driven Documents) y gracias a la librería de gráficos basados en JavaScript disponible de Plotly junto con el API de Python, podemos elaborar un grupo variado de ellos.
Dichos gráficos tienen la característica que son dinámicos e interactivos, es decir se tiene la facilidad de poder hacer por ejemplo acercamientos, asimismo poder brindarnos mayor información al pasar sobre ellos con el mouse, en fin debemos resaltar la facilidad que se tiene para su edición antes de obtener nuestro producto final.

Instalación


El DataPlotly solamente está disponible en la actualidad para la versión de desarrollo del QGIS, por lo tanto, podemos probarlo antes que salga la nueva versión 3.0 del QGIS. La instalación del mismo es sencilla desde nuestro administrador de complementos. Una vez instalado en plugin, lo veremos ubicado en la barra de herramientas listo para trabajar con nuestros datos.

Figura 2: Vista del plugin Data Plotly para su instalación



Conociendo a Data Plotly


Cuando activamos el plugin, nos aparece una ventana, la cual tiene dos elementos permanentes, el primero en la parte superior, relacionada a la selección del tipo de gráfico a elaborar (Plot Type) y el segundo en la parte inferior, que nos brinda la opción de generar más de un gráfico en una vista (SubPlots), el cual pueden representarse en filas o columnas (Figura 3). 
Luego podemos apreciar que la ventana se subdivide en 5 pestañas; el primero denominado "Plot Properties", en donde se define la capa de datos a emplear e indicar las variables a usar, es decir los campos de datos que se van a representar (varía dependiendo del tipo de gráfico), del mismo modo, nos permite definir el tipo de marcadores a usar (puntos, líneas o puntos y líneas), luego las características de dichos marcadores, la coloración y la posibilidad de considerar el uso de transparencias.


 
Figura 3: Ventana de Data Plotly con opciones para configurar nuestro gráfico


En la segunda pestaña denominada "Plot Customizations", podemos terminar de configurar nuestro gráfico, agregando la leyenda, ingresando títulos al gráfico, etiquetar los ejes del gráfico, asimismo, podemos indicarle la información adicional que deseamos visualizar, el cual será mostrado al pasar el mouse por los marcadores de nuestro gráfico (Figura 4).
Luego de realizar la configuración de nuestro gráfico, ya se estaría listo para adicionar el mismo a un repositorio o contenedor de gráficos, haciendo clic al botón "Add Plot to Basket".

Figura 4: Vista de la pestaña para editar nuestro gráfico


Precisamente, nuestra siguiente pestaña denominada "Plot Basket" nos permite administrar nuestros gráficos, sobre todo si deseamos mostrar más de uno a la vez. Hay que tener en cuenta que al hacer cualquier modificación en las dos primeras pestañas, para que podamos verlos deberán ser adicionadas a este contenedor de gráficos, desde ahí ya podemos ir eliminando gráficos pasados, para ello solo seleccionamos de la tabla y luego hacemos clic en el botón "Remove Single Plot From List".

Figura 5: Vista del contenedor de gráficos generados



Finalmente ya teniendo claro lo que queremos mostrar en nuestra gráfica, podemos dar clic en el botón "Draw Plot", tal como se aprecia en la Figura 5. 
Luego podemos ver que la siguiente pestañas denominada "Help", nos muestra la ayuda necesaria en función al tipo de gráfico elegido, el cual nos permite guiarnos para saber todas las opciones disponibles. Por última la pestaña "Raw Plot", muestra lo que sería el código fuente generado de nuestro gráfico, el mismo está en formato de texto HTML, el cual lo podemos copiar y guardarlo con dicha extensión y luego verlo en nuestro navegador web.  

Figura 6: Vista de la ayuda del plugin y el código html generado



Gráficos Dinámicos


En esta parte vamos a mostrar algunos ejemplos de los gráficos que se pueden elaborar con este plugin, para ello empezaremos por el tipo "Scatter Plot". En sí, tomaremos este tipo de gráfico como modelo, con la finalidad de mostrar el dinamismo y lo interactivo que se puede lograr con el gráfico elaborado.

Figura 7: Editando nuestro gráfico incluyendo títulos y etiquetado a los ejes


Figura 8: Opción de editar los textos a mostrarse al pasar el mouse y un "RangeSlider"
el cual nos permite seleccionar un rango de datos que se puede mostrar.




Figura 9: Opciones para mostrar los valores al seleccionarlo apoyados con líneas de puntos


Figura 10: Se puede aplicar selección en caja o tipo lazo, resaltando un grupo de datos


Figura 11: Se puede mover y aplicar un acercamiento (zoom) a una zona de interés


Otros Tipos de Gráficos Posibles


Si bien no voy a entrar a interpretar los gráficos, si quisiera mostrarles que en función a nuestros datos, ha sido posible elaborar otro grupo de gráficos, los que se presentan en las siguientes figuras.

Figura 12: Gráfico o Diagrama de Caja (Basado en cuartiles y mostrando la media)

Figura 13: Vista de un histograma simple

Figura 14: Gráfico de pastel, agrupando los datos de población por categorías

Figura 15: Vista de un Gráfico Histograma 2D

Figura 16: Vista de un Gráfico Polar

Figura 17: Vista de un Gráfico o Diagrama Ternario (empleo de tres variables)

Figura 18: Vista de un Gráfico en Contornos


Combinando Gráficos


Tal como lo indicamos previamente, podemos componer mas de un tipo de gráfico a la vez, para ello debemos ir generando y editando nuestros tipos de gráficos, luego adicionarlos a nuestra bandeja (basket), no olvidar seleccionar la opción de generar "SubPlots". Es importante tener en cuenta que no todos los tipos de gráficos soportan esta opción.

Figura 19: Combinando tres tipos de gráficos


Insertando Gráficos a Nuestro Mapa


Como paso final vamos a insertarlo en nuestro mapa con el que venimos trabajando, para ello previamente, tal como se muestra en la Figura 19, en la parte inferior de los gráficos existe la opción de exportarlo tanto como imagen como en formato html. Dentro de nuestro diseñador de impresión de los mapas, simplemente para nuestro caso, adicionamos como una imagen para el gráfico de pastel  y como marco HTML a la imagen con los tres gráficos combinados.

Figura 20: Gráficos añadidos a nuestro mapa


Muy bien, ahora nuestro mapa podrá mostrar mayor información con los gráficos añadidos.