我似乎无法找到任何方法使传单路径成为基于另一个变量的渐变。对于使用下面的lat / lng对的给定数据帧:
df <- data.frame(lat = lat, lng = lng, var = c(1:25))
因此传单图应如下所示:
leaflet() %>%
addTiles() %>%
addPolylines(data = df, lng = ~lng, lat = ~lat,
color = ~var)
但这只会使整条路径的颜色相同。
即使我这样做:
pal <- colorNumeric(
palette = "Blues",
domain = df$var)
leaflet() %>%
addTiles() %>%
addPolylines(data = df, lng = ~lng, lat = ~lat,
color = ~pal(var))
这也不起作用。
可重复的例子:
df <- data.frame(lat = rnorm(40) * 2 + 13,
lng = rnorm(40) + 48,
var = c(1:40))
pal <- colorNumeric(
palette = "Blues",
domain = df$var)
leaflet() %>%
addTiles() %>%
addPolylines(data = df, lng = ~lng, lat = ~lat,
color = ~pal(var))
答案 0 :(得分:0)
聚会晚了一点,但是正如SymbolixAU所写,数据集中的每一行都需要一个单独的折线。完整示例如下:
library(leaflet)
library(dplyr)
library(grDevices)
set.seed(1234)
df <- data.frame(lat = rnorm(40) * 2 + 13,
lng = rnorm(40) + 48,
var = c(1:40))
gradientFunction <- colorRampPalette(c("white", "blue"))
colorGradient <- gradientFunction(dim(df)[1])
df1 <- df %>%
mutate(nextLat = lead(lat),
nextLng = lead(lng),
color = colorGradient
)
gradient_map <- leaflet() %>%
addTiles()
for (i in 1:nrow(df1)) {
gradient_map <- addPolylines(map = gradient_map,
data = df1,
lng = as.numeric(df1[i, c('lng', 'nextLng')]),
lat = as.numeric(df1[i, c('lat', 'nextLat')]),
color = as.character(df1[i, c('color')])
)
}
gradient_map