如何用我自己的数据绘制欧洲地图?
How to plot an Europe map with my own data?
我想做一张欧洲地图,所以我尝试使用这段代码,但我真的不知道它是如何工作的。
#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, 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,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
中不相同,因此您需要告诉合并并保留所有区域由 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()
我想做一张欧洲地图,所以我尝试使用这段代码,但我真的不知道它是如何工作的。
#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, 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,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
中不相同,因此您需要告诉合并并保留所有区域由 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()