Editando Color y etiquetas
- Editando el color por año.
- Colores disponibles en ColorBrewer.
- Para cambiar el color es posible usar la función colorFactor() con los colores preestablecidos y las etiquetas o niveles (domain) a utilizar. En este caso es el mes de observación del oso.
- El argumento label permite controlar la leyenda correspondiente a cada punto cuando.
# Colores y nombres de etiqueta (leyenda)
colores <- c('#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c',
'#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928')
meses <- levels(as.factor(data_to_clean$month))
# Cambiando color
paleta <- colorFactor(palette = colores, domain = meses)
leaflet() %>%
addTiles() %>%
addCircles(data = data_to_clean, lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fill = 1, label = ~occurrenceRemarks)
Añadir leyenda
- Es posbible asignar el mapa a un objeto.
- A través del pipeline (tubería - %>%) es posible conectar varias instrucciones.
- Es necesario declarar el grupo (group) ya que en el control de objetos será necesario
m <- leaflet() %>%
addTiles() %>%
addCircles(data = data_to_clean, lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fill = 1, popup = ~occurrenceRemarks,
label = ~habitat, group = "Meses")
m <- m %>%
addLegend(data = data_to_clean, position = "bottomleft", pal = paleta,
values = ~month, title = "Meses", opacity = 1,
group = "Leyenda")
m
Manipulando capas
- En este caso se va a añadir una capa para cada mes.
- Es necesario para cada mes genera una base de datos.
# Datos para mes 1
data_mes1 <- data_to_clean %>%
filter(month == 1)
# Mapa para el mes enero
m1 <- leaflet() %>%
addTiles() %>%
addCircles(data = data_mes1, lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fill = 1, popup = ~occurrenceRemarks,
label = ~habitat, group = "Mes1")
m1 <- m1 %>%
addLegend(data = data_mes1, position = "bottomleft", pal = paleta,
values = ~month, title = "Meses", opacity = 1,
group = "Leyenda")
m1
- Ciclo para todos los meses: para no realizar el proceso manualmente para cada mes, se obtienen los 12 filtros a través de un loop.
mi_lista <- list()
for (i in 1:12) {
mi_lista[[i]] = data_to_clean %>% filter(month == i)
}
names(mi_lista) <- paste0("Mes", 1:12)
- Mapa completo con control sobre cada mes: sólo agrego los primeros 5 meses a manera de ejemplo.
mi_mapa <- leaflet() %>%
addTiles() %>%
addCircles(data = mi_lista[[1]], lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fillOpacity = 0.5, popup = ~occurrenceRemarks,
label = ~habitat, group = "Mes1") %>%
addCircles(data = mi_lista[[2]], lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fillOpacity = 0.5, popup = ~occurrenceRemarks,
label = ~habitat, group = "Mes2") %>%
addCircles(data = mi_lista[[3]], lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fillOpacity = 0.5, popup = ~occurrenceRemarks,
label = ~habitat, group = "Mes3") %>%
addCircles(data = mi_lista[[4]], lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fillOpacity = 0.5, popup = ~occurrenceRemarks,
label = ~habitat, group = "Mes4") %>%
addCircles(data = mi_lista[[5]], lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fillOpacity = 0.5, popup = ~occurrenceRemarks,
label = ~habitat, group = "Mes5")
mi_mapa
-
Agregando capas a través de un loop: en este caso utilizo las 12 bases de datos, una para cada mes.
nombres <- paste0("Mes", 1:12)
mi_mapa2 <- leaflet() %>% addTiles()
for (i in 1:length(mi_lista)) {
mi_mapa2 = mi_mapa2 %>%
addCircles(data = mi_lista[[i]], lat = ~decimalLatitude, lng = ~decimalLongitude,
color = ~paleta(month), fillOpacity = 1, popup = ~occurrenceRemarks,
label = ~habitat, group = nombres[i])
}
mi_mapa2
- Controlando cada capa (mes):
mi_mapa2 %>%
addLegend(data = data_to_clean, position = "bottomleft", pal = paleta,
values = ~month, title = "Meses", opacity = 1,
group = "Leyenda") %>%
addLayersControl(overlayGroups = c(nombres, "Leyenda"),
options = layersControlOptions(collapsed = TRUE))
Editando controles
- Es posible agregar el argumento “basegroups” para seleccionar una sola opción, en este caso un sólo mes.
- La leyenda la mantengo como “group”, sólo los meses los cambio a “basegroups”.
- La función “hideGroup” permite controlar si la leyenda o capa específica aparece seleccionada en el mapa.
mi_mapa2 %>%
addLegend(data = data_to_clean, position = "bottomleft", pal = paleta,
values = ~month, title = "Meses", opacity = 1,
group = "Leyenda") %>%
addLayersControl(overlayGroups = c("Leyenda"), baseGroups = nombres,
options = layersControlOptions(collapsed = TRUE)) %>%
hideGroup("Leyenda")
Dibujar áreas
- La función “addDrawToolbar” permite incorporar elementos de dibujo o representaicón en el mapa. Es el usuario final quien dispone de dichas opciones.
- El argumento “showDistances” de la función “addMeasurePathToolbar” igualada a TRUE permitirá medir la longitud de las polilíneas.
regiones_africa2 <- leaflet() %>%
addTiles() %>%
addPolygons(data = africa_spatial, fillColor = topo.colors(16, alpha = NULL),
weight = 1, label = ~NAME, group = "Regiones") %>%
addDrawToolbar(targetGroup = "Marinas",
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions())) %>%
addLayersControl(overlayGroups = c("Regiones", "Marinas"),
options = layersControlOptions(collapsed = TRUE)) %>%
addMeasurePathToolbar(options = measurePathOptions(imperial = FALSE,
minPixelDistance = 100,
showDistances = TRUE))
regiones_africa2
Editor de estilo
- La función addStyleEditor() permite agregar páneles de selección para ajustar detalles estéticos del mapa.
regiones_africa3 <- leaflet() %>%
addTiles() %>%
addPolygons(data = africa_spatial, fillColor = topo.colors(16, alpha = NULL),
weight = 1, label = ~NAME, group = "Regiones") %>%
addDrawToolbar(targetGroup = "Marinas",
editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions())) %>%
addLayersControl(overlayGroups = c("Regiones", "Marinas"),
options = layersControlOptions(collapsed = TRUE)) %>%
addMeasurePathToolbar(options = measurePathOptions(imperial = FALSE,
minPixelDistance = 100,
showDistances = TRUE)) %>%
addStyleEditor()
regiones_africa3