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

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

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

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


person wrocg    schedule 08.01.2018    source источник


Ответы (1)


Поскольку воспроизводимых данных нет, я решил использовать один из моих предыдущих постов, связанных с листовкой. Есть две вещи, которые вы хотите вынести из этого поста: 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)

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

person jazzurro    schedule 08.01.2018
comment
Это прекрасный пример, спасибо. Я также хотел бы дать ссылку на этот ответ, который я нашел очень полезным для невыпуклых многоугольников: gis.stackexchange.com/a/265475 / 78424 - person geneorama; 01.01.2020
comment
@geneorama Спасибо за ваши слова. Очень признателен! Спасибо, что оставили здесь полезную ссылку. - person jazzurro; 01.01.2020