我在英国有一些数据,我需要介绍一张英格兰所有9个地区的地图。我试着使用图书馆(地图),但我得到的地块没有任何区域信息,我只是结束了整个英国。
理想情况下,我正在寻找类似于这个2009.svg.png的结果
(由于缺乏声誉点,我实际上无法附上照片,对不起!)
我的数据有一列用于具有字符值的区域:
EastMid
EastEng
London
NorthEast
NorthWest
SouthEast
SouthWest
WestMid
Yorkshire然后,我将继续按不同属性的颜色区域进行映射。
我该怎么做呢?
发布于 2017-04-02 15:26:09
首先,正如Andrew所写的,您需要找到并下载带有必要区域的shapefiles。您需要的这种分割通常称为历史区域或标准统计区域。您可能需要检查这个站点:http://www.natureonthemap.naturalengland.org.uk/
第二,读取shapefile并与公投数据合并。确保公投文件中的区域名称与地理空间文件中的区域名称完全相同(我使用从上面提到的站点下载的文件,如果您下载另一个shapefile,名称可能会有所不同):
library(rgdal)
library(tmap)
geoEN = readOGR(".", "maghistengland")在这种情况下,区域名称存储在名称中(在另一个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)

https://stackoverflow.com/questions/43099328
复制相似问题