Я пытаюсь объединить две схемы colorRampPalette
для использования в leaflet
и следую этому приятному для-числовой-переменной-в-буклете-в">примере. Этот пример работает нормально, но я не могу заставить его работать для моей работы, воспроизводимый пример ниже. Я использую палитру RdYlGn
и хочу, чтобы числа ниже порога были темно-зелеными, а числа выше порога — более красными (пропуская некоторые внутренние цвета).
В моем примере мое отсечение равно nc$PERIMETER
‹ 1,3, поэтому я хочу, чтобы числа под этим значением были зелеными, а все, что выше, более красным (цвет #FDAE61
и далее).
library(sf)
library(leaflet)
library(RColorBrewer)
#palette im using
palette <- rev(brewer.pal(11, "RdYlGn"))
# [1] "#006837" "#1A9850" "#66BD63" "#A6D96A" "#D9EF8B" "#FFFFBF" "#FEE08B" "#FDAE61" "#F46D43" "#D73027" "#A50026"
previewColors(colorNumeric(palette = palette, domain = 0:10), values = 0:10)
# preparing the shapefile
nc <- st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) %>%
st_transform(st_crs(4326)) %>%
st_cast('POLYGON')
nc
x <- sum(nc$PERIMETER < 1.3)
x # number of values below threshold = 21
### Create an asymmetric color range
## Make vector of colors for values smaller than 1.3 (21 colors)
rc1 <- colorRampPalette(colors = c("#006837", "#1A9850"), space = "Lab")(x) #21
## Make vector of colors for values larger than 1.3
rc2 <- colorRampPalette(colors = c("#FDAE61", "#A50026"), space = "Lab")(length(nc$PERIMETER) - x)
## Combine the two color palettes
rampcols <- c(rc1, rc2)
mypal <- colorNumeric(palette = rampcols, domain = nc$PERIMETER)
previewColors(colorNumeric(palette = rampcols, domain = NULL), values = 1:length(nc$PERIMETER))
глядя на предварительный просмотр, кажется, что он сработал (21 значение ниже 1,3 должно быть зеленым):
заговор это:
leaflet() %>%
addTiles() %>%
addPolygons(data = nc,
fillOpacity = 0.7,
fillColor = ~mypal(PERIMETER),
popup = paste("PERIMETER: ", nc$PERIMETER) )
графики в порядке, но не дает правильного цвета, выделенный выше порогового значения (1.3) и поэтому не должен быть зеленым, но это так:
Я думал, что то, как я создавал палитры, было неправильным, но предварительный просмотр, кажется, предполагает, что я сделал это правильно?
у кого-нибудь есть идеи? спасибо