Различный цвет этикетки в R Leaflet - PullRequest
0 голосов
/ 25 сентября 2019

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

Ниже приведен пример данных.Прямо сейчас я могу сделать этикетки только одного цвета (например, черный).В этом примере я хотел бы, чтобы надписи для электроники были синим шрифтом, а надписи для неэлектроники - красным шрифтом.

library(leaflet)
library(mapview)

data <- data.frame("ID"=1:5, "Name" = c("ipod", "book", "phone", "ipod", "book"), "Color" = c("blue","red","blue","blue","red"), "Lat"=c(38.56250,38.66163,38.66574,38.55060,38.55060), "Long"=c(-90.59690,-90.5000,-90.37138,-90.35756,-90.5285))

pal<-(colorFactor(c("blue","red"), domain=c("blue", "red")))

map <-leaflet()  %>% addTiles() %>% 
  setView(lng = -90.576959, lat  = 38.440455, zoom = 10) %>% 
  addProviderTiles("Esri") %>%
  addCircleMarkers(data=data, lng = ~Long, lat= ~Lat, radius = 5, fillColor = ~pal(`Color`), color="black", fillOpacity = .90, weight = 1) %>%
  addLabelOnlyMarkers(
    data = data,
    label = as.character(data$Name),
    labelOptions = labelOptions(noHide = T, #hides labels
                                direction = "auto", 
                                textOnly = F, 
                                offset = c(0,0),
                                style = list(
                                  "color" = "black", 
                                  "font-family" = "serif",
                                  "font-style" = "normal",
                                  "box-shadow" = "1px 1px rgba(0,0,0,0.25)",
                                  "font-size" = "12px",
                                  "border-color" = "rgba(0,0,0,0.5)",
                                  "padding" = "2px" 
                                )))
map

1 Ответ

0 голосов
/ 25 сентября 2019

Вам нужно сделать небольшой обходной путь, заменив метку HTML.

В addLabelOnlyMarkers() функции, введите label = as.character(data$Name) со следующими кодами:

label = purrr::map(glue("<span style='color:{data$Color}'>{as.character(data$Name)}<span>"),htmltools::HTML)

Поэтому вместо использованиятекст как метки, вы используете HTML как метки:

[[1]]
<span style='color:blue'>ipod<span>

[[2]]
<span style='color:red'>book<span>

[[3]]
<span style='color:blue'>phone<span>

[[4]]
<span style='color:blue'>ipod<span>

[[5]]
<span style='color:red'>book<span>

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...