Как добавить метки поверх полигонов в листовке

Я работаю с листовкой R пакет. У меня есть система зонирования, сделанная из полигонов, и я хотел бы положить их идентификаторы поверх них. Ниже приведена иллюстрация (с другим программным обеспечением) моей цели.

Спасибо за ваши предложения!

1 ответ

Решение

Поскольку нет воспроизводимых данных, я решил использовать один из моих предыдущих постов, связанных с листовкой. Есть две вещи, которые вы хотите убрать из этого поста: 1) вам нужно создать фрейм данных, содержащий центральные точки целевых регионов, 2) вам нужно использовать addLabelOnlyMarkers(), Вы можете достичь первой цели, используя gCentroid(), Я добавил имена строк набора данных многоугольника (Великобритания) в качестве символа 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)

введите описание изображения здесь

Другие вопросы по тегам