我有大约25,000人拥有完整邮政编码的数据集。我正试图在FSA级别创建加拿大地图,但似乎总是得到奇怪的结果。如果有人能指出我的错误发生在哪里或者我错过了什么,我将不胜感激。
library(rgeos)
library(maptools)
library(ggplot2)
fsas = readShapeSpatial('./Resources/FSA/gfsa000a11a_e.shp')
data = fortify(fsas, region = 'CFSAUID')
data$fsa = factor(data$id)
data$id = NULL
df$fsa = substr(df$Postal, 1, 3)
prvdr_cts = data.frame(table(df$fsa)) ; names(prvdr_cts) = c('fsa', 'ct')
plot.data = merge(data, prvdr_cts, by = 'fsa')
ggplot(plot.data, aes(x = long, y = lat, group = group, fill = ct)) +
geom_polygon() +
coord_equal()
我从“前向分拣区域”下的http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/bound-limit-2011-eng.cfm获取了我的地图文件。 df有两列Person ID和FSA。
答案 0 :(得分:0)
在我忘记group = group
之前,我已经看到过类似的问题了(正如@ r.bot所指出的那样),但正如你所知,我不知道是不是因为你的形状文件是'重新使用非常详细。
我建议尝试sf
包来加载已使用readShapePoly
取代的shapefile。这样做的好处是速度更快,您不需要fortify()
。我还简化了shapefile,使绘图更快。最后,您需要ggplot2
的开发版本才能使用新的geom_sf()
(ATOW):
install.packages(c("rmapshaper", "sf", "devtools"))
devtools::install_github("tidyverse/ggplot2")
library("ggplot2")
fsas = sf::read_sf("gfsa000a11a_e.shp")
fsas = rmapshaper::ms_simplify(fsas, keep = 0.05)
ggplot(fsas) + geom_sf()