如何在传单中的多边形顶部添加标签
How to add labels on top of polygons in leaflet
我正在使用传单 R
包。我有一个由多边形组成的 zoning 系统,我想将它们的 ID 放在它们之上。下面是我的 objective 的插图(用另一个软件)。
感谢您的建议!
由于没有可重现的数据,我决定使用我以前 post 中与传单相关的一个。您需要从这个 post 中拿走两件事:1) 您需要创建一个包含目标区域中心点的数据框,2) 您需要使用 addLabelOnlyMarkers()
。您可以使用 gCentroid()
实现第一件事。我将多边形数据集 (UK) 的行名称作为字符添加到 centers
。这用于标记。您需要考虑在您自己的情况下使用什么标签。此数据集准备就绪后,您想在 addLabelOnlyMarkers()
中使用它。
library(raster)
library(rgeos)
library(leaflet)
# Get UK polygon data
UK <- getData("GADM", country = "GB", level = 2)
# Find a center point for each region
centers <- data.frame(gCentroid(UK, byid = TRUE))
centers$region <- row.names(UK)
### Create dummy data
set.seed(111)
mydf <- data.frame(place = unique(UK$NAME_2),
value = sample.int(n = 1000, size = n_distinct(UK$NAME_2), replace = TRUE))
### Create five colors for fill
mypal <- colorQuantile(palette = "RdYlBu", domain = mydf$value, n = 5, reverse = TRUE)
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 55, lng = -3, zoom = 6) %>%
addPolygons(data = UK,
stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3,
fillColor = ~mypal(mydf$value),
popup = paste("Region: ", UK$NAME_2, "<br>",
"Value: ", mydf$value, "<br>")) %>%
addLabelOnlyMarkers(data = centers,
lng = ~x, lat = ~y, label = ~region,
labelOptions = labelOptions(noHide = TRUE, direction = 'top', textOnly = TRUE)) %>%
addLegend(position = "bottomright", pal = mypal, values = mydf$value,
title = "UK value",
opacity = 0.3)
我正在使用传单 R
包。我有一个由多边形组成的 zoning 系统,我想将它们的 ID 放在它们之上。下面是我的 objective 的插图(用另一个软件)。
感谢您的建议!
由于没有可重现的数据,我决定使用我以前 post 中与传单相关的一个。您需要从这个 post 中拿走两件事:1) 您需要创建一个包含目标区域中心点的数据框,2) 您需要使用 addLabelOnlyMarkers()
。您可以使用 gCentroid()
实现第一件事。我将多边形数据集 (UK) 的行名称作为字符添加到 centers
。这用于标记。您需要考虑在您自己的情况下使用什么标签。此数据集准备就绪后,您想在 addLabelOnlyMarkers()
中使用它。
library(raster)
library(rgeos)
library(leaflet)
# Get UK polygon data
UK <- getData("GADM", country = "GB", level = 2)
# Find a center point for each region
centers <- data.frame(gCentroid(UK, byid = TRUE))
centers$region <- row.names(UK)
### Create dummy data
set.seed(111)
mydf <- data.frame(place = unique(UK$NAME_2),
value = sample.int(n = 1000, size = n_distinct(UK$NAME_2), replace = TRUE))
### Create five colors for fill
mypal <- colorQuantile(palette = "RdYlBu", domain = mydf$value, n = 5, reverse = TRUE)
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 55, lng = -3, zoom = 6) %>%
addPolygons(data = UK,
stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3,
fillColor = ~mypal(mydf$value),
popup = paste("Region: ", UK$NAME_2, "<br>",
"Value: ", mydf$value, "<br>")) %>%
addLabelOnlyMarkers(data = centers,
lng = ~x, lat = ~y, label = ~region,
labelOptions = labelOptions(noHide = TRUE, direction = 'top', textOnly = TRUE)) %>%
addLegend(position = "bottomright", pal = mypal, values = mydf$value,
title = "UK value",
opacity = 0.3)