我在英国有一些数据,我需要介绍英格兰所有9个地区的地图。我尝试使用库(地图),但我得到的地块没有任何区域信息,我最终得到了整个英国。
理想情况下,我正在寻找这样的结果 https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/English_regions_2009.svg/370px-English_regions_2009.svg.png
(由于缺乏的声望点,我实际上无法附上照片,道歉!)
我的数据有一列用于包含字符值的区域:
EastMid
EastEng
London
NorthEast
NorthWest
SouthEast
SouthWest
WestMid
Yorkshire
然后我将继续按照具有不同属性的颜色区域进行地图
我将如何继续这个?
答案 0 :(得分:0)
首先,正如安德鲁所写,你需要找到并下载包含必要区域的shapefile。您需要的这种划分通常称为历史区域或标准统计区域。您可以查看此网站:http://www.natureonthemap.naturalengland.org.uk/
其次,您阅读shapefile并与公民投票数据合并。确保公投文件中的区域名称与地理空间文件中的区域名称完全相同(我使用从上述站点下载的文件,如果您下载另一个shapefile,名称可能会有所不同):
library(rgdal)
library(tmap)
geoEN = readOGR(".", "maghistengland")
在这种情况下,区域名称存储在NAME中(在另一个shapefile属性名称中可以不同)。您可以通过以下方式检查哪些信息包含地理空间文件:
ogrInfo(".", "maghistengland")
出于示例的目的,我正在创建投票结果的假数字。
votes = as.data.frame(
cbind(
c("EAST MIDLANDS",
"EAST OF ENGLAND",
"LONDON",
"NORTH EAST",
"NORTH WEST",
"SOUTH EAST",
"WEST MIDLANDS",
"YORKSHIRE AND THE HUMBER",
"SOUTH WEST"),
c(60, 65, 55, 50, 45, 40, 35, 30, 30),
c(40, 35, 45, 50, 55, 60, 65, 70, 70)
), stringsAsFactors = FALSE)
names(votes) = c("Regions", "Yes", "No")
votes$Yes = as.numeric(votes$Yes)
votes$No = as.numeric(votes$No)
votes$Result = colnames(votes)[max.col(votes[,2:3])+1]
现在我们可以合并两个文件:
mapEN = append_data(geoEN, votes, key.shp = "NAME", key.data = "Regions")
第三,创建必要的图表。这是三个例子。你可以玩多个组(n = 2,3,4 ..),颜色等。
tm_shape(mapEN) +
tm_fill("Yes", title = "This is a title", palette = "Blues", n=4) +
tm_borders(alpha=.5)
tm_shape(mapEN) +
tm_fill("No", title = "This is a title", palette = "Reds", n=5) +
tm_borders(alpha=.5)
tm_shape(mapEN) +
tm_fill("Result", palette = c("Red", "Blue")) +
tm_borders(alpha=.5)