问题描述
我想做一张欧洲地图,所以我正在尝试使用此代码,但我真的不知道它是如何工作的。
#that's my data
europe<-structure(list(Code = c("BE","BG","CZ","DK","DE","EE","IE","EL","ES","FR","HR","IT","CY","LV","LT","LU","HU","MT","NL","AT","PL","PT","RO","SI","SK","FI","SE","IS","NO","CH","UK"),Country = c("Belgium","Bulgaria","Czechia","Denmark","Germany (until 1990 former territory of the FRG)","Estonia","Ireland","Greece","Spain","France","Croatia","Italy","Cyprus","Latvia","Lithuania","Luxembourg","Hungary","Malta","Netherlands","Austria","Poland","Portugal","Romania","Slovenia","Slovakia","Finland","Sweden","Iceland","norway","Switzerland","United Kingdom"
),Production = c(133.2,48.2,77.4,138.2,121.3,71.2,178.9,58.5,95,126.1,64.5,100.1,75,59.8,67.7,175.1,66.8,75.8,122.3,115.7,65,66.1,83.9,70.1,109.5,112.4,118.2,152.4,129.3,96.8)),row.names = c(NA,-31L),class = c("tbl_df","tbl","data.frame"))
现在我正在使用我找到的这段代码,我知道我的问题是在绑定数据时,如果有人能告诉我如何解决它或者你知道其他方法...... :)
# Download the shape file from the web and unzip it:
download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip",destfile="world_shape_file.zip")
system("unzip world_shape_file.zip")
# Load it as a geospatial object in R
library(rgdal)
my_spdf <- readOGR( dsn= "./world_shape_file/",layer="TM_WORLD_BORDERS_SIMPL-0.3",verbose=FALSE)
europa <- my_spdf[my_spdf@data$REGION==150,]
europa@data <- merge(europa@data,europe)
# Use the cartography library to do the choropleth map
library(maptools)
par(mar=c(0,0))
spplot(europa,zcol = "Production",xlim=c(-30,120),ylim=c(30,90),lwd=0.5)
``
解决方法
我认为您认为 europa 对象仍然有一个名为 @data
的项目,但如果您查看它,情况并非如此:
> my_spdf <- readOGR( dsn= "~/Downloads/",layer="TM_WORLD_BORDERS_SIMPL-0.3",verbose=FALSE)
> europa <- my_spdf[my_spdf@data$REGION==150,]
> names(europa)
[1] "FIPS" "ISO2" "ISO3" "UN" "NAME" "AREA" "POP2005"
[8] "REGION" "SUBREGION" "LON" "LAT"
此外,europa
和 europe
中您要合并的列的名称不相同,因此您需要告诉 merge 并保留所有区域由 all.x= 完成真
> europa <- merge(europa,europe,by.x="FIPS",by.y="Code",all.x=TRUE)
> names(europa)
[1] "FIPS" "ISO2" "ISO3" "UN" "NAME" "AREA" "POP2005"
[8] "REGION" "SUBREGION" "LON" "LAT" "Country" "Production"
现在您可以绘制:
png()
spplot(europa,zcol = "Production",xlim=c(-30,120),ylim=c(30,90),lwd=0.5)
dev.off()