(本博客中的数据已替换为随机数)
之前发现了一个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)