# Required packages
library(leaflet) # Load the leaflet package for interactive maps
library(leaflet.extras) # Load additional leaflet extras
library(leafletCN) # Load leaflet for Chinese maps
# Generate data
geo = data.frame(long = rep(121.44, 1000),
lat = rep(31.22, 1000)) # Create a data frame with longitude and latitude
# Plot
map <- leaflet(geo) %>% # Create a leaflet map with the geo data
amap(group = "Gaode") %>% # Add Gaode map as Layer 1
addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012,
group = "DarkBackground") # Add DarkBackground NASA map as Layer 2
map # Display the map`
这个非常笼统代表假设你希望你的背景地图是:
您的示例 geo df 创建了 1,000 个相同的点,没有为每个单元格着色的值,但我已使用它作为创建栅格数据集的基础。您需要弄清楚如何将 geo df 转换为栅格。一些选项包括
terra::rasterize()
和 stars::st_rasterize()
。将 df 转换为栅格后,您可以使用 leaflet::addRasterImage()
来绘制数据。
加载所需包并创建示例数据:
library(terra)
library(sf)
library(dplyr)
library(leaflet)
library(leaflet.extras)
library(leafletCN)
library(ggplot2)
# Create a spatraster based on your example coordinates
set.seed(1)
geo <- rast(nrow = 32, ncol = 32, nlyrs = 1,
xmin = 120, xmax = 124,
ymin = 30, ymax = 34,
names = "colour_var",
crs = "EPSG:4326") %>%
init("cell")
# Assign random values to geo
geo[] <- sample(1:20, nrow(geo) * ncol(geo), replace = TRUE)
根据 color_var 值将颜色值分配给 geo:
palcol <- colorNumeric(c("#020321", "#081138", "#c0965f" , "#faebb3", "#fef9d4"),
values(geo),
na.color = "transparent")
剧情:
map <- leaflet() %>%
amap(group = "Gaode") %>%
addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012,
group = "DarkBackground") %>%
addRasterImage(geo, colors = palcol, opacity = 1)
map