Leí una publicación sobre mapas interactivos con R usando el leaflet
paquete.
En este artículo, el autor crea un mapa de calor como este:
X=cbind(lng,lat)
kde2d <- bkde2D(X, bandwidth=c(bw.ucv(X[,1]),bw.ucv(X[,2])))
x=kde2d$x1
y=kde2d$x2
z=kde2d$fhat
CL=contourLines(x , y , z)
m = leaflet() %>% addTiles()
m %>% addPolygons(CL[[5]]$x,CL[[5]]$y,fillColor = "red", stroke = FALSE)
No estoy familiarizado con la bkde2D
función, así que me pregunto si este código podría generalizarse a algún shapefile.
¿Qué sucede si cada nodo tiene un peso específico que nos gustaría representar en el mapa de calor?
¿Hay otras formas de crear un mapa de calor con un leaflet
mapa en R?
Respuestas:
Este es mi enfoque para hacer un mapa de calor más generalizado en Leaflet usando R. Este enfoque usa
contourLines
, como la publicación de blog mencionada anteriormente, pero usolapply
para iterar sobre todos los resultados y convertirlos en polígonos generales. En el ejemplo anterior, depende del usuario trazar individualmente cada polígono, por lo que llamaría a esto "más generalizado" (¡al menos esta es la generalización que quería cuando leía la publicación del blog!).Esto es lo que tendrás en este punto:
Y así es como se vería el mapa de calor con puntos:
Aquí hay un área que me sugiere que necesito ajustar algunos parámetros o quizás usar un núcleo diferente:
fuente
bandwidth
debkde2d()
?MASS::bandwidth.nrd(dat$latitude)
yMASS::bandwidth.nrd(dat$longitude)
como puntos de partida. Consulte la?MASS::kde2d
documentación a la que se vinculabandwith.nrd
. También vea?KernSmooth::dpik
si está interesado en otro enfoque.gridsize = c(100,100)
eso significa que hay un total de 10,000 células?Partiendo de la respuesta de genorama anterior, también puede convertir la salida de bkde2D en un ráster en lugar de líneas de contorno, utilizando los valores fhat como valores de celda ráster
Esta es tu salida. Tenga en cuenta que los valores de baja densidad aún se muestran como coloreados en el ráster.
Podemos eliminar estas celdas de baja densidad con lo siguiente:
Ahora cualquier celda ráster con un valor inferior a 1 es transparente.
Si desea un ráster agrupado, use la función colorBin en lugar de la función colorNumeric:
Para hacerlo más suave, simplemente aumente el tamaño de la cuadrícula en la función bkde2D. Esto aumenta la resolución del ráster generado. (Lo cambié a
Salida:
fuente
Una manera fácil de crear mapas de calor de Leaflet en R es usar el complemento Leaflet.heat . Puede encontrar una excelente guía sobre cómo usarlo aquí . Esperamos que te sea útil.
fuente