(本博客中的数据已替换为随机数)
之前发现了一个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")
如果用自创的调色盘
pal <- colorNumeric(palette = rev(brewer.pal(n=9,name = "RdYlBu")),domain = t$diff)
geojsonMap(t,"China",palette = pal(t$diff))
就会出现调色盘循环用的问题,不知道怎么回事,也不知道怎么解决。
所以只能用最原始的方式,用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)