leaflet for R(4)——leafletCN色块图

王致远

2018/11/20

(本博客中的数据已替换为随机数)

之前发现了一个leafletCN中的一个bug,就是geojsonMap函数的颜色映射有问题。

## Using Wmean as value column: use value.var to override.
province diff
1 安徽省 0.009
2 北京市 -0.007
3 福建省 -0.021
4 甘肃省 0.012
5 广东省 0.008
6 广西壮族自治区 0.078
7 贵州省 0.035
8 海南省 0.003
9 河北省 0.004
10 河南省 -0.018
11 黑龙江省 -0.006
12 湖北省 0.006
13 湖南省 0.000
14 吉林省 -0.001
15 江苏省 0.002
16 江西省 0.009
17 辽宁省 0.008
18 内蒙古自治区 -0.051
19 宁夏回族自治区 0.029
20 青海省 0.030
21 山东省 -0.012
22 山西省 -0.013
23 陕西省 0.009
25 四川省 0.006
26 天津市 -0.027
27 西藏自治区 -0.082
28 新疆维吾尔自治区 0.004
29 云南省 0.010
30 浙江省 0.016
31 重庆市 0.026

如果用默认的“Blues”,“Reds”这类颜色,是没有问题的

geojsonMap(t,"China",palette = "Reds")
Legend
-0.08-0.06-0.04-0.020.000.020.040.06

NA

如果用自创的调色盘

pal <- colorNumeric(palette = rev(brewer.pal(n=9,name = "RdYlBu")),domain = t$diff)
geojsonMap(t,"China",palette = pal(t$diff))
Legend
-0.08-0.06-0.04-0.020.000.020.040.06

NA

就会出现调色盘循环用的问题,不知道怎么回事,也不知道怎么解决。

所以只能用最原始的方式,用addPolygons添加色块。

这里的rev是倒叙一个向量的意思,用于将颜色映射反过来。

x <- c(4,1,5,2,6,3,7);x
## [1] 4 1 5 2 6 3 7
rev(x)
## [1] 7 3 6 2 5 1 4
pal <- colorBin(palette = rev(brewer.pal(n=9,name = "RdYlBu")),domain = t$diff)
map <- leafletGeo("China",t)
leaflet(map) %>% amap() %>%
  addPolygons(stroke = TRUE,
                smoothFactor = 1,
                fillOpacity = 0.7,
                weight = 1,
                color = ~pal(value),
                popup = ~htmltools::htmlEscape(popup)
    ) %>%
    #加入右下角边框
    addLegend("bottomright", pal = pal, values = ~value,
              title = "货车交通量变化量",
              labFormat = leaflet::labelFormat(prefix = ""),
              opacity = 1)
货车交通量变化量
-0.10 – -0.08
-0.08 – -0.06
-0.06 – -0.04
-0.04 – -0.02
-0.02 – 0.00
0.00 – 0.02
0.02 – 0.04
0.04 – 0.06
0.06 – 0.08
NA