【发布时间】:2019-03-21 20:02:06
【问题描述】:
我正在使用传单在 R 中创建地图,我的多边形标签与它们的值不匹配。
该地图旨在通过 FSA (Forward Sortation Area) 将安大略省分开,geojson 包括加拿大的所有 FSA。
所以首先我只对安大略省的 FSA 进行子集化(使用它们的第一个字母,因为这是 FSA 的工作方式)。
file_path <- "data/regions.geojson"
fsa <- geojsonio::geojson_read(
x=file_path,
what="sp"
)
#Get subsets
fsa_ont <-subset (
x=fsa,
subset= grepl(
x=fsa@data$CFSAUID,
pattern="^L|^M|^P|^K|^N"
)
)
该地图还应该通过数据中来自该 FSA 的人数来突出显示每个 FSA。我根据 FSA 的人数创建了一个调色板。调色板似乎根据它最终给出多边形的标签来工作。
#create a colour palette
mypalette <- colorBin(palette=c("#8acb88", "#FF9933", "#990033"), domain= pop$Count, bins=c(1,5,10,15), na.color='white')
接下来创建地图图块
map <- leaflet::leaflet() %>%
leaflet::addProviderTiles(providers$OpenStreetMap)
然后我为我的标签创建文本。
这是一个用来检查问题所在的标签。它应该显示从 geojson 数据中提取的 FSA,然后是从我的数据集中提取的 FSA,然后是从数据集中提取的计数。
我的数据集中的计数和 FSA 在每个标签上相互匹配,但它们与 geojson 中的 FSA 不匹配。 FSA 都不匹配多边形的真实名称。
mytext=paste("FSA Ont Data: ", fsa@data$CFSAUID, "FSA Ours:", pop$FSA,"Count: ", pop$Count)
这是用我的多边形创建地图,似乎运作良好。
map_fsa<- map %>%
leaflet::addPolygons(
data=fsa_ont,
weight=1,
opacity=3,
color="white",
dashArray="3",
## fillColor= ~mypalette(pop$Count),
## fillOpacity=.7,
highlight = highlightOptions(
weight = 2,
color = "#666",
dashArray = "",
fillOpacity = 4,
bringToFront = TRUE
),
label= mytext)%>%
addLegend("bottomright", pal = mypalette, values = pop$Count,
title = "Survey Respondents",
opacity = 1)
map_fsa
Picture of output, and a polygon label Picture of Northern Ontario FSAs 这是代码的输出:查看标签不仅与该地区的正确 FSA 不匹配,而且 geojson 和我的数据似乎也不匹配。颜色似乎是正确的。
请给我一些指导!
编辑:我已经查找了解决方案,我发现的壁橱是this question,但我似乎无法让它适用于我的代码。
【问题讨论】: