Пользовательская палитра с 2 цветами и пользовательскими контрольными точками в буклете R - непрерывная переменная - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь создать собственную палитру с 2 цветами (красным и зеленым) и пользовательскими точками останова для моей карты листовки. В настоящее время я использую одну цветовую палитру красных оттенков. Mymap , которую я сгенерировал, используя colornumeri c как

pal2 <- colorNumeric(palette = "Reds", domain=NULL)

Я использовал его в своей листовке как

leafletProxy("map", data = selecteddata()) %>% #, data = temp2.df ------ took it out/ selecteddata()
  addPolygons(data = temp2.df ,fillColor = ~pal2(selecteddata()),
              highlightOptions = highlightOptions(color = "orange", weight = 2), 
              color = "#BDBDC3",
              fillOpacity = 0.8,
              weight = 1,
              label = ~NAME                
  )

То, что я ищу, это раскрасить карту в зеленый и красный цвета вместо этого с перерывами на зеленый - + 10%, + 20%, + 35%, + 50%, + inf Reds - -10%, - 20%, -35%, -50%, -инф

Желаемая цветовая палитра

Как мне этого добиться?

PS - Также я хочу отбросить неокрашенную область карты на финальном экране, чтобы она выглядела как 2-е изображение

1 Ответ

0 голосов
/ 20 апреля 2020

Палитры сложны, когда вам нужны сложные цвета / контрольные точки. Альтернатива - добавить цветной столбец к вашим данным и самостоятельно рассчитать соответствующие значения RGB. Требуется несколько дополнительных строк кода, но вы получаете лучший контроль:

enter image description here

Ниже приведен минимальный пример использования желаемой палитры:

library(leaflet)
library(maps)

#Load a map of the US from the 'map' package
shp_map = map("state", fill = TRUE, plot = FALSE)

#Add a made up percentage
shp_map$percentage <- sample(seq(from = -100, to = 50), length(shp_map$names))

#Define the breaks and associated RGB value
vec_breaks <- c(     -100,       -50,       -35,       -20,       -10,         0,        10,        20,        35,        55)
vec_rgb    <- c("#b51224", "#d93e22", "#f5783f", "#ffb15a", "#ffe08d", "#dae88e", "#a1cd6a", "#67ac62", "#15854c", "#005c37") 

#Add a colour column, and put in the appropriate RGB value
for (i in 1:length(shp_map$percentage)) {
    shp_map$colour[i] <- vec_rgb[min(which(vec_breaks > shp_map$percentage[i])) - 1]
}

#Draw map
leaflet(data = shp_map) %>% 
    addPolygons(fillColor = shp_map$colour, stroke = TRUE, fillOpacity = 0.8, color = "black", opacity = 1, weight = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...