Capítulo17 Datos Ordenados
Fecha de la ultima revisión
## [1] "2024-11-07"
El tema proviene de los siguientes sitios.
English: https://r4ds.had.co.nz/tidy-data.html
Español: https://es.r4ds.hadley.nz/12-tidy.html
17.1 Temas: Datos Ordenados
17.1.1 El paquete tidyr
Ver vignettes
## # A tibble: 6 × 4
## pais anio casos poblacion
## <chr> <dbl> <dbl> <dbl>
## 1 Afganistán 1999 745 19987071
## 2 Afganistán 2000 2666 20595360
## 3 Brasil 1999 37737 172006362
## 4 Brasil 2000 80488 174504898
## 5 China 1999 212258 1272915272
## 6 China 2000 213766 1280428583
## # A tibble: 12 × 4
## pais anio tipo cuenta
## <chr> <dbl> <chr> <dbl>
## 1 Afganistán 1999 casos 745
## 2 Afganistán 1999 población 19987071
## 3 Afganistán 2000 casos 2666
## 4 Afganistán 2000 población 20595360
## 5 Brasil 1999 casos 37737
## 6 Brasil 1999 población 172006362
## 7 Brasil 2000 casos 80488
## 8 Brasil 2000 población 174504898
## 9 China 1999 casos 212258
## 10 China 1999 población 1272915272
## 11 China 2000 casos 213766
## 12 China 2000 población 1280428583
## # A tibble: 6 × 3
## pais anio tasa
## <chr> <dbl> <chr>
## 1 Afganistán 1999 745/19987071
## 2 Afganistán 2000 2666/20595360
## 3 Brasil 1999 37737/172006362
## 4 Brasil 2000 80488/174504898
## 5 China 1999 212258/1272915272
## 6 China 2000 213766/1280428583
## # A tibble: 3 × 3
## pais `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afganistán 745 2666
## 2 Brasil 37737 80488
## 3 China 212258 213766
## # A tibble: 3 × 3
## pais `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afganistán 19987071 20595360
## 2 Brasil 172006362 174504898
## 3 China 1272915272 1280428583
≠# Leaflet: Mapas interactivos
## [1] "2024-11-07"
17.2 Bajar los datos de la web del USGS
Website: https://earthquake.usgs.gov/earthquakes/feed/v1.0/csv.php
library(data.table)
earthquakes <- fread("https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv")
head(earthquakes, n=10)
## time latitude longitude depth mag magType nst gap
## <POSc> <num> <num> <num> <num> <char> <int> <num>
## 1: 2024-11-07 17:17:04 36.09100 -117.8747 2.5700 1.17 ml 22 73
## 2: 2024-11-07 17:10:19 31.58900 -104.5200 3.1292 1.50 ml 16 78
## 3: 2024-11-07 17:09:09 38.84933 -122.8288 3.5400 0.46 md 13 118
## 4: 2024-11-07 17:08:46 61.66120 -150.0564 23.8000 1.80 ml NA NA
## 5: 2024-11-07 16:54:07 19.17483 -155.3843 29.5000 2.03 ml 52 178
## 6: 2024-11-07 16:53:27 38.83216 -122.8825 2.0100 0.93 md 14 129
## 7: 2024-11-07 16:42:04 -5.70290 154.4274 91.4640 5.20 mww 54 100
## 8: 2024-11-07 16:40:18 33.15883 -115.9590 6.8000 0.92 ml 21 63
## 9: 2024-11-07 16:34:28 31.71700 -104.3020 4.8672 1.60 ml 20 63
## 10: 2024-11-07 16:28:04 32.81400 -116.1745 11.6500 0.89 ml 20 78
## dmin rms net id updated
## <num> <num> <char> <char> <POSc>
## 1: 0.031000 0.13 ci ci40789391 2024-11-07 17:33:59
## 2: 0.100000 0.30 tx tx2024vxnl 2024-11-07 17:38:39
## 3: 0.006828 0.08 nc nc75083596 2024-11-07 17:27:15
## 4: NA 0.44 ak ak024ec9ugnb 2024-11-07 17:10:06
## 5: 0.063570 0.14 hv hv74524677 2024-11-07 16:57:01
## 6: 0.006095 0.03 nc nc75083586 2024-11-07 17:17:17
## 7: 2.710000 0.77 us us7000nqfp 2024-11-07 17:03:18
## 8: 0.021470 0.16 ci ci40789359 2024-11-07 17:22:18
## 9: 0.100000 0.30 tx tx2024vxmg 2024-11-07 17:02:47
## 10: 0.068770 0.17 ci ci40789335 2024-11-07 17:15:28
## place type horizontalError
## <char> <char> <num>
## 1: 8 km NE of Coso Junction, CA earthquake 0.18
## 2: 66 km SSW of Whites City, New Mexico earthquake 0.00
## 3: 10 km WNW of Cobb, CA earthquake 0.55
## 4: 9 km S of Willow, Alaska earthquake NA
## 5: 10 km ESE of Pāhala, Hawaii earthquake 0.48
## 6: 12 km E of Cloverdale, CA earthquake 0.34
## 7: 135 km WNW of Panguna, Papua New Guinea earthquake 7.36
## 8: 16 km S of Salton City, CA earthquake 0.23
## 9: 51 km S of Whites City, New Mexico earthquake 0.00
## 10: 19 km WNW of Ocotillo, CA earthquake 0.32
## depthError magError magNst status locationSource magSource
## <num> <num> <int> <char> <char> <char>
## 1: 0.190000 0.099 10 reviewed ci ci
## 2: 1.770136 0.100 13 automatic tx tx
## 3: 1.660000 0.300 14 automatic nc nc
## 4: 0.200000 NA NA automatic ak ak
## 5: 0.590000 0.920 6 automatic hv hv
## 6: 0.470000 0.190 17 automatic nc nc
## 7: 6.862000 0.071 19 reviewed us us
## 8: 0.370000 0.101 10 reviewed ci ci
## 9: 1.187781 0.200 16 automatic tx tx
## 10: 0.670000 0.134 13 reviewed ci ci
17.3 Si bajo los datos a mi computadora
Use esta alternativa si bajo los datos a su computadora
#library(readr)
#Earthquake_all_month <- read_csv("Datos/Earthquake_all_month.csv")
#EQ=Earthquake_all_month
#head(EQ, n=10)
## [1] "time" "latitude" "longitude" "depth"
## [5] "mag" "magType" "nst" "gap"
## [9] "dmin" "rms" "net" "id"
## [13] "updated" "place" "type" "horizontalError"
## [17] "depthError" "magError" "magNst" "status"
## [21] "locationSource" "magSource"
## Classes 'data.table' and 'data.frame': 8025 obs. of 22 variables:
## $ time : POSIXct, format: "2024-11-07 17:17:04" "2024-11-07 17:10:19" ...
## $ latitude : num 36.1 31.6 38.8 61.7 19.2 ...
## $ longitude : num -118 -105 -123 -150 -155 ...
## $ depth : num 2.57 3.13 3.54 23.8 29.5 ...
## $ mag : num 1.17 1.5 0.46 1.8 2.03 0.93 5.2 0.92 1.6 0.89 ...
## $ magType : chr "ml" "ml" "md" "ml" ...
## $ nst : int 22 16 13 NA 52 14 54 21 20 20 ...
## $ gap : num 73 78 118 NA 178 129 100 63 63 78 ...
## $ dmin : num 0.031 0.1 0.00683 NA 0.06357 ...
## $ rms : num 0.13 0.3 0.08 0.44 0.14 ...
## $ net : chr "ci" "tx" "nc" "ak" ...
## $ id : chr "ci40789391" "tx2024vxnl" "nc75083596" "ak024ec9ugnb" ...
## $ updated : POSIXct, format: "2024-11-07 17:33:59" "2024-11-07 17:38:39" ...
## $ place : chr "8 km NE of Coso Junction, CA" "66 km SSW of Whites City, New Mexico" "10 km WNW of Cobb, CA" "9 km S of Willow, Alaska" ...
## $ type : chr "earthquake" "earthquake" "earthquake" "earthquake" ...
## $ horizontalError: num 0.18 0 0.55 NA 0.48 0.34 7.36 0.23 0 0.32 ...
## $ depthError : num 0.19 1.77 1.66 0.2 0.59 ...
## $ magError : num 0.099 0.1 0.3 NA 0.92 0.19 0.071 0.101 0.2 0.134 ...
## $ magNst : int 10 13 14 NA 6 17 19 10 16 13 ...
## $ status : chr "reviewed" "automatic" "automatic" "automatic" ...
## $ locationSource : chr "ci" "tx" "nc" "ak" ...
## $ magSource : chr "ci" "tx" "nc" "ak" ...
## - attr(*, ".internal.selfref")=<externalptr>
17.4 Importación de Paquetes y Datos
Seleccionar un subgrupo de los datos, solamente lo primeros 100 datos
## [1] 8025
## time latitude longitude depth mag magType nst gap
## <POSc> <num> <num> <num> <num> <char> <int> <num>
## 1: 2024-11-07 17:17:04 36.09100 -117.8747 2.5700 1.17 ml 22 73
## 2: 2024-11-07 17:10:19 31.58900 -104.5200 3.1292 1.50 ml 16 78
## 3: 2024-11-07 17:09:09 38.84933 -122.8288 3.5400 0.46 md 13 118
## 4: 2024-11-07 17:08:46 61.66120 -150.0564 23.8000 1.80 ml NA NA
## 5: 2024-11-07 16:54:07 19.17483 -155.3843 29.5000 2.03 ml 52 178
## 6: 2024-11-07 16:53:27 38.83216 -122.8825 2.0100 0.93 md 14 129
## dmin rms net id updated
## <num> <num> <char> <char> <POSc>
## 1: 0.031000 0.13 ci ci40789391 2024-11-07 17:33:59
## 2: 0.100000 0.30 tx tx2024vxnl 2024-11-07 17:38:39
## 3: 0.006828 0.08 nc nc75083596 2024-11-07 17:27:15
## 4: NA 0.44 ak ak024ec9ugnb 2024-11-07 17:10:06
## 5: 0.063570 0.14 hv hv74524677 2024-11-07 16:57:01
## 6: 0.006095 0.03 nc nc75083586 2024-11-07 17:17:17
## place type horizontalError depthError
## <char> <char> <num> <num>
## 1: 8 km NE of Coso Junction, CA earthquake 0.18 0.190000
## 2: 66 km SSW of Whites City, New Mexico earthquake 0.00 1.770136
## 3: 10 km WNW of Cobb, CA earthquake 0.55 1.660000
## 4: 9 km S of Willow, Alaska earthquake NA 0.200000
## 5: 10 km ESE of Pāhala, Hawaii earthquake 0.48 0.590000
## 6: 12 km E of Cloverdale, CA earthquake 0.34 0.470000
## magError magNst status locationSource magSource
## <num> <int> <char> <char> <char>
## 1: 0.099 10 reviewed ci ci
## 2: 0.100 13 automatic tx tx
## 3: 0.300 14 automatic nc nc
## 4: NA NA automatic ak ak
## 5: 0.920 6 automatic hv hv
## 6: 0.190 17 automatic nc nc
17.5 Mapa básico con Leaflet
leaflet(earthquakes) %>%
addTiles() %>%
addCircleMarkers(lng = ~longitude,
lat = ~latitude,
popup = ~mag,
color= ~(type))
#color= ~(type),
17.6 Usando la paletas de color de viridis
https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html
Evaluar las siguientes paletas de colores:
- viridis
- inferno
- plasma
- magma
- cividis
- rocket
- turbo
Pasos
- Seleccionar los datos en el áreas de PR, latitud y longitud
- Crear una paleta de colores/ o usar viridis
- Crear un mapa con los datos de los terremotos
names(EQ_100)
unique(EQ_100$type)
pal = colorFactor(palette = "magma≠", domain = NULL)
leaflet(EQ_100) %>%
addTiles() %>%
addCircleMarkers(lng = ~longitude,
lat = ~latitude,
color= ~pal(mag),
popup = ~mag
)
17.7 Trabajando con datos de iNaturalist
17.7.1 AHora crea un mapa de los terremotos alrededor de Puerto Rico
Obtener los datos de observaciones de una especie en iNaturalist desde R:
Los datos a utilizar se obtendrán desde iNaturalist, una aplicación con base en la ciencia ciudadana que mantiene un registro de ocurrencias de especies.
La función get_inat_obs()
permite acceder a los datos disponibles en iNaturalist, especificando los siguientes parámetros:
taxon_name
: La especies de interés, siempre escrita entre comillas (“). Puede utilizar nombre común o científico.quality
: Siendo una aplicación basada en ciencia ciudadana, la calidad de algunos datos podría ser baja, debido a que les falta información - como nombre científico o ubicación - o que contienen información errónea - especies mal identificadas-. Colocando'research'
en este parámetro se especifica que se desea obtener sólo aquellas observaciones con alta calidad - que tengan información completa y cuya identificación haya sido confirmada por varias personas de la comunidad -.geo
: Al igual que el parámetroquality
, este parámetro cuyo valor es lógico (TRUE
oFALSE
), es para especificar que se quiere obtener sólo los datos que están georeferenciados (cuando se coloca comoTRUE
).maxresults
: A través del API (Interfaz de Programación de Aplicaciones) de iNaturalist se puede acceder a un máximo de 10,000 observaciones en una sola búsqueda. Con este parámetro, cuyo valor debe ser numérico, se especifica cuantas observaciones se desea obtener, y no se debe exceder de 10,000 por búsqueda.bounds
: Un vector que contiene los límites geográficos de la búsqueda. Se puede insertar un cuadro delimitador ya especificado en un objeto, concatenar los valores del vector, o insertar un objeto de características simples (Simple Feature, sf). El argumentobounds
es importante porque si obtenemos datos de iNaturalist, las únicas columnas que obtenemos con información acerca de la región o área donde se hicieron las observaciones son:
place_guess: Contiene el nombre de la región, pero su precisión y los nombres utilizados para cada región varía mucho.
latitue: Posición en el eje vertical del sistema de coordenadas.
longitude: Posición en el eje horizontal del sistema de coordenadas.
Esto crea un problema a la hora del filtrar los datos por el nombre de una región, pues es difícil encontrar un solo valor que encompase a todas las variantes del nombre utilizado para esa región. iNaturalist se encuentra a nivel mundial, y usted puede acceder a todos esos datos. Sin embargo, hoy accederemos solamente a datos de Puerto Rico. Entonces, lo primero antes de acceder a lo datos de iNaturalist, es crear un objeto que contenga los límites geográficos de interés crea. Para esto se crea un objeto que contenga un cuadro delimitador (bounding box):
cajapr <- c(
17.75, #Latitud Sur
-67.4, #Longitud Oeste
18.75, #Latitud Norte
-65.15 #Longitud Este
)
cajapr
Ahora podemos acceder a datos de Puerto Rico utilizando el objeto cajapr
. Para este ejercicio utilizaremos datos de orquídeas pertenecientes al género Eulophia. En Puerto Rico se han reportado 3 especies de este género Eulophia alta, Eulophia maculata y Eulophia graminea. De estos, sólo E. alta es considerada nativa de la isla. Entonces, utilizando la función get_inat_obs
podemos acceder a los datos de Eulophia en Puerto Rico
eulophia <- get_inat_obs(taxon_name = "Eulophia",
quality = 'research',
geo = T,
maxresults = 1000,
bounds = cajapr)
eulophia$scientific_name <- as.factor(eulophia$scientific_name)
flextable(head(eulophia)) # Para ver las primeras 6 lineas en una tabla bonita
bounds = cajapr Con el siguiente código podemos ver de forma rápida cuántas observaciones de cada especie hemos obtenido de iNaturalist:
Ahora que hemos obtenido los datos, podemos observar su distribución en el mapa de Puerto Rico utilizando leaflet
.
17.8 Utilizando Leaflet
La función base del paquete leaflet es leaflet()
, con esta se activa un artilugio (widget en inglés) sobre el cuál se construye el mapa. Esta función debe estar unida a otra función como addTiles()
que añade el mapa.
Una vez tenemos el artilugio y el mapa, añadimos una capa que incluye los datos que se desean visualizar con marcadores sobre el mapa con la función addMarkers()
dentro del cual se deben especificar los parámetros lng
(longitud) y lat
(latitud). Note que también se especifica el data.frame que contiene los datos bajo la función leaflet()
. Cuando se trabaja en Leaflet, al especificar las variables a utilizar, es necesario colocar una virgulilla (~) antes de la variable. Esto le deja saber a R que lo que se especifica es una variable dentro del data.frame mencionado en la primera capa bajo la función leaflet()
.
Una vez los marcadores están establecidos, es posible añadir etiquetas que contengan información acerca de las observaciones con el parámetro popup
de la función addMarkers()
. Por ejemplo, se pueden colocar etiquetas que contengan información del lugar de la observación especificando que la etiqueta contenga la información de la variable place_guess. Para ver la etiqueta debe hacer clic sobre el marcador de interés.
names(eulophia)
leaflet(eulophia) %>%
addTiles() %>%
addMarkers(lng = ~ longitude,
lat = ~ latitude,
popup = ~ place_guess) # cambiar a la variable de interes
La función paste0
es una función base de R que concatena todos los elementos en una línea de caracteres. Los caracteres introducidos serán interpretados como UTF-8 o codificación de caracteres. Estos caracteres pueden ser mezclados con valores de una variable de caracteres en un data.frame. En el siguiente ejemplo se crea una etiqueta que contiene la ubicación y la especie observada. Se utiliza la función paste0()
para combinar caracteres y las variables scientific_name y place_guess del data.frame.
leaflet(eulophia) %>%
addTiles() %>%
addMarkers(lng = ~ longitude,
lat = ~ latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado donde: </B>", eulophia$place_guess)
)
La función addAwesomeMarkers()
puede ser utilizada en lugar de addMarkers()
y permite utilizar marcadores con diferentes diseños que se pueden obtener de fontawesome. Es posible cambiar los colores de los marcadores utilizando la codificación de colores RGB en formato (#RRGGBB). La siguiente guía de colores en R creada por Melissa Clarkson (2010) explica como utilizar colores en R: A guide to using color in R. Adicional, esta guía creada por Derek H. Ogle (2022) es muy útil.
En schemecolor podemos encontrar las codificaciones de los colores y muchos funcionan para leaflet
. Para hacer estos cambios utilizamos la función awesomeIcons()
bajo el parámetro icon
dentro de addAwesomeMarkers()
.
Dentro de la función awesomeIcons()
podemos especificar varios parámetros como:
icon
: El icono que desea utilizar para su marcador. Debe poner el nombre que aparece en la página web de iconos que esté utilizando (i.e., fontawesome).library
: Cuando se especifica un icono, es necesario especificar la biblioteca de donde se saca el icono. Si es de fontawesome sería'fa'
.markerColor
: Para cambiar el color del marcador (parte que rodea el icono), utilizando la codificación de colores de schemecolor.iconColor
: Para cambiar el color del icono del marcadora, también con la codificación de schemecolor.
leaflet() %>%
addTiles() %>%
addAwesomeMarkers(lng = eulophia$longitude,
lat = eulophia$latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado por: </B>", eulophia$place_guess),
icon = awesomeIcons(icon = "leaf", library = "fa",
markerColor = "darkgreen",
iconColor = "#FFFFFF")
)
Cuando se visualiza una gran cantidad de datos, esto puede resultar en el solapamiento de los marcadores, lo cual no es muy agradable a la vista. Es posible crear agregados que ayuden a visualizar mejor y faciliten el movimiento a través del mapa con el parámetro clusterOptions
bajo la función addAwesomeMarkers()
. El valor de este parámetro debe ser la función markerClusterOptions()
.
leaflet() %>%
addTiles() %>%
addAwesomeMarkers(lng = eulophia$longitude, lat = eulophia$latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado por: </B>", eulophia$place_guess),
icon = awesomeIcons(icon = "leaf", library = "fa",
markerColor = "darkgreen",
iconColor = "#FFFFFF"),
clusterOptions = markerClusterOptions()
)
Y para culminar, es posible cambiar el diseño del mapa utilizando la función addProviderTiles()
en lugar de addTiles()
. Puede echar un vistazo a los diferentes diseños disponibles para Leaflet la página de proveedores de Leaflet en GitHub. Actualmente Leaflet en R admite diseños de los siguientes proveedores: OpenStreetMap, MapQuestOpen, Stamen, Esri and OpenWeatherMap.
icon1 <- awesomeIcons(icon = "smile-o",
iconColor = "#FFFFFF",
library = "fa",
markerColor = "darkgreen")
leaflet() %>%
addProviderTiles("Esri.WorldImagery") %>%
addAwesomeMarkers(lng = eulophia$longitude, lat = eulophia$latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado por: </B>", eulophia$place_guess),
icon = icon1
)
17.9 Trabajando Variables Categóricas con Leaflet:
Es posible distinguir entre especies utilizando diferentes colores, pero debe utilizar la función addCircleMarkers()
en lugar de addAwesomeMarkers()
. Para colorear grupos en Leaflet es necesario generar una paleta de colores para las variables de interés de acuerdo al tipo de variable (i.e., numérica, factorial). Para esto se utilizan las funciones colorFactor()
, colorNumeric()
, colorBin()
, o colorQuantile()
. colorFactor()
y colorNumeric()
generan paletas de colores para variables factoriales y numericas, respectivamente; mientras que colorBin()
y colorQuantile()
generan paletas de colores para valores numéricos resumidos en grupos.
En este caso se está trabajando con una variable factorial que divide las observaciones entre 3 especies de orquídeas. Primero se crea una paleta de colores para una variable factorial con la función colorFactor()
. Bajo esta función se especifican los parámetros palette
y levels
. palette
es para especificar la paleta de colores a utilizar y levels
especifica los niveles de la variable factorial. La paleta de colores que se utiliza ("Dark2"
) proviene del paquete RColorBrewer. Esta paleta de colores para los niveles de la variable factorial scientific_name del data.frame eulophia se guardará en un objeto llamado pal.
mypal <- colorFactor(palette = 'Set3',
levels = levels(eulophia$scientific_name))
eulophia$scientific_name=as.factor(eulophia$scientific_name)
mypal <- colorFactor(palette = 'Set3',
levels = levels(eulophia$scientific_name))
Ahora que se ha especificado los colores para los valores factoriales, es posible utilizar el objeto pal para colorear los marcadores circulares del mapa de Leaflet de acuerdo a la especie observada especificando el parámetro color
leaflet(eulophia) %>%
addTiles() %>%
addCircleMarkers(lng = ~ longitude, lat = ~ latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado por: </B>", eulophia$place_guess),
color = ~ mypal(scientific_name))
Para ayudar con la visualización de datos pertenecientes a diferentes grupos, en ocasiones es bueno presentar una leyenda que indique los colores que representan cada grupo. Es posible añadir una leyenda al mapa de Leaflet utilizando la función addLegend()
y especificando los siguientes parámetros:
position
: Para determinar la posición de la leyenda, en este caso se colocará en la parte superior derecha,"topright"
, del mapa, pero podría colocarla en la parte inferior derecha ("bottomright"
), la parte inferior izquierda ("bottomleft"
), o la parte superior izquierda ("topleft"
).pal: La paleta de colores a utilizar generada a través de la función
colorFactor()
o sus equivalentes (i.e.,colorNumeric()
)values
: Los valores o la variable u objeto que contiene los valores utilizados.title
: El título de la leyenda especificado como una línea de caracteres.
leaflet(eulophia) %>%
addTiles() %>%
addCircleMarkers(lng = ~ longitude, lat = ~ latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado por: </B>", eulophia$place_guess),
color = ~ pal(scientific_name)) %>%
addLegend(position = "topright",
pal = pal,
values = ~ scientific_name,
title = "Species"
)
iconcolor <- function(scienctific_name)
leaflet() %>%
addProviderTiles("Esri.WorldImagery") %>%
addAwesomeMarkers(lng = eulophia$longitude, lat = eulophia$latitude,
popup = paste0("<B>Especie: </B>", "<I>", eulophia$scientific_name, "</I>",
"<br/>",
"<B>Colectado por: </B>", eulophia$place_guess),
icon = icon1
)
L.circleMarker([place.lon, place.lat], { color: getColor(place.constructdate), // you can call the getColor function fillColor: getColor(place.constructdate), fillOpacity: 0.5 })