如何用自己的数据绘制欧洲地图?

问题描述 投票:0回答:2

我想做一张欧洲地图,所以我尝试使用这段代码,但我真的不知道它是如何工作的。

#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)

``
r maps rgdal r-maptools
2个回答
1
投票

我认为您认为欧罗巴天体仍然有一个名为

@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=TRUE

完成的
> 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()

enter image description here


0
投票

根据您提供的数据,一个紧凑的替代方案可以使用包

WorldMapR
及其函数
worldmap
:

europedf <- as.data.frame(europe)

europedf[1:3,] # show first rows of the data

worldplot(data = europedf,
          ColName = "Production",
          CountryName = "Country",
          CountryNameType = "name",
          latitude = c(35,72), longitude = c(-24,40),          # focus on Europe
          palette_option = brewer.pal(n = 8, name = "Blues"),
          annote = T,                                          # If you want labels
          div = 0.8                                            # dimensions option
          )

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.