Листовка с R: форматирование чисел и разделитель тысяч в метке - PullRequest
0 голосов
/ 08 января 2020

Так что я пытаюсь включить некоторые цифры c в мою этикетку, но изо всех сил пытаюсь получить их в правильном формате учета, чтобы он соответствовал легенде. У меня нет проблем с изготовлением этикеток без какого-либо числового c форматирования, поэтому любая помощь в достижении желаемого разделителя тысяч будет блестящей.

library(geojson)
library(geojsonio)
library(leaflet)
library(sf)

url <- "http://leafletjs.com/examples/choropleth/us-states.js"
doc <- readLines(url)
doc2 <- gsub("var statesData = ", "", doc)
write(doc2, file = "tempgeo.json")
states <- geojson_read("tempgeo.json", what = "sp")

bins <- c(0, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, Inf)
pal <- colorBin("YlOrRd", domain = states$density, bins = bins)

states$density <- states$density*1000

c <- leaflet(states) %>%
  setView(-96, 37.8, 4) %>%
  addProviderTiles("MapBox", options = providerTileOptions(
    id = "mapbox.light",
    accessToken = Sys.getenv('MAPBOX_ACCESS_TOKEN')))


labels <- sprintf(
  "<strong>%s</strong><br/>%g",
  states$name, states$density
) %>% lapply(htmltools::HTML)



c <- c %>% addPolygons(
  fillColor = ~pal(density),
  weight = 2,
  opacity = 1,
  color = "white",
  dashArray = "3",
  fillOpacity = 0.7,
  highlight = highlightOptions(
    weight = 5,
    color = "#666",
    dashArray = "",
    fillOpacity = 0.7,
    bringToFront = TRUE),
  label = labels,
  labelOptions = labelOptions(
    style = list("font-weight" = "normal", padding = "3px 8px"),
    textsize = "15px",
    direction = "auto")) %>%
  addLegend(pal = pal, values = ~density, opacity = 0.7, title = NULL,
            position = "bottomright")
c

Спасибо

1 Ответ

1 голос
/ 08 января 2020

Вы можете преобразовать метку в строку и использовать prettyNum для форматирования ее запятыми.

labels <- sprintf(
  "<strong>%s</strong><br/>%s",
  states$name, prettyNum(states$density, big.mark = ",")
) %>% lapply(htmltools::HTML)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...