Круги в легенде для листовки с addCircleMarkers в R - без блестящих - PullRequest
0 голосов
/ 22 октября 2019

Я создаю карту листовки в R - мне не нужно создавать блестящее приложение, и я еще не занялся этим конкретным набором навыков!

Я пытался следовать этому посту здесьчтобы создать круги в моей легенде: Создание легенды с помощью листовки с кругами R .

Однако я не уверен, как включить атрибут tags$style в мой код R как @K. Род предложил сделать так, чтобы элементы легенды были кругами. В моем коде легенда состоит из квадратов. Так близко!

Может ли кто-нибудь помочь мне подтолкнуть этот код к созданию кругов предметов легенды?

library(leaflet)
library(dplyr)

#create data
Points<-data.frame(x=runif(10,20,21), y=runif(10,0,1), 
                   var=c(rep(c(10,20, 40),3), 20))
Points <- Points %>% 
  mutate(Category = case_when(var == 10 ~ "A", 
                              var == 20 ~ "B",
                              TRUE ~ "C"),
         color = case_when(Category == "A" ~ "blue",
                           Category == "B" ~ "blue",
                           TRUE ~ "red"))


map = leaflet() %>% 
  addTiles()

addLegendCustom <- function(map, colors, labels, sizes, opacity = 0.5){
  colorAdditions <- paste0(colors, "; width:", sizes, "px; height:", sizes, "px")
  labelAdditions <- paste0("<div style='display: inline-block;height: ", 
                           sizes, "px;margin-top: 4px;line-height: ", sizes, "px;'>", 
                           labels, "</div>")

  return(addLegend(map, colors = colorAdditions, 
                   labels = labelAdditions, opacity = opacity))
}


map %>% 
  addCircleMarkers(Points$x,Points$y,radius=Points$var, 
                   color = Points$color, 
                   stroke = FALSE, fillOpacity = 0.5) %>%
  addLegendCustom(colors = c("blue", "blue", "red"), 
                  labels = c("A", "B", "C"), sizes = c(10, 20, 40))

В легенде я бы предпочел маркеры круга ... не квадраты, как показано ниже!

enter image description here

1 Ответ

2 голосов
/ 22 октября 2019

Из исходного ответа вы пропустили один набор определения глобального стиля, отвечающего за круглую форму.

Добавьте border-radius: 50%; к набору colorAdditions стилей CSS, который является тем стилем, который вы используете. нуждаются в этом.

Это сделало бы:

  colorAdditions <- paste0(colors, "; border-radius: 50%; width:", sizes, "px; height:", sizes, "px")

Немного хакерский, но работает.

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