我希望根据我的变量prob2
值来填充来自UE的一些国家的地图,然后填写亚洲和非洲等一些大陆的地图。这是我的数据map_d
:
state prob2
<chr> <dbl>
Germany 0.6
Austria 2.9
Belgium 1.9
Bulgaria 0.6
Cyprus 0.0
Croatia 1.7
...
Other Asian 9.2
Other African 2.5
Other North American 10.7
Other Latin American 2.3
Other Oceania 5.0
首先,我使用以下代码填写欧洲国家:
europ_map <- map_data("world", region = c(
"Germany",
"Austria",
"Belgium",
"Bulgaria",
"Chipre",
"Croacia",
"Denmark",
"Slovakia",
"Slovenia",
"Spain",
"Estonia",
"Finland",
"France",
"Greece",
"Hungary",
"Ireland",
"Italy",
"Latvia",
"Lithuania",
"Luxembourg",
"Malta",
"Norway",
"Netherlands",
"Poland",
"Portugal",
"UK",
"Czech Republic",
"Romania",
"Sweden"))
fin_map <- merge(europ_map, map_d, by.x="region", by.y="state")
library(plyr)
fin_map <- arrange(fin_map, group, order)
ggplot(fin_map, aes(x=long, y=lat, group=group, fill=prob2)) +
geom_polygon(colour = "white") +
coord_map("polyconic")
哪个产生这张地图: https://codepen.io/anon/pen/QvqqXP
现在,我需要在地图中添加大陆形状,并填充prob2
的值。有可能吗?
我在这篇文章中找到了如何绘制大陆的方法,但这是一种不同的方式:Europe Map,我无法通过此代码添加变量值。
提前致谢!!
答案 0 :(得分:0)
FWIW,这是一个启动者:
library(tidyverse)
wm <- map_data("world")
cc <- raster::ccodes()
head(cc[,c(1:3, 8:10)], 3)
# NAME ISO3 ISO2 UNREGION1 UNREGION2 CONTINENT
# 1 Aruba ABW AW Caribbean Americas South America
# 2 Afghanistan AFG AF Southern Asia Asia Asia
# 3 Angola AGO AO Middle Africa Africa Africa
dat <- read.csv(text="state, prob2
Other Asian, 9.2
Other African, 2.5
Other North American, 10.7
Other Latin American, 2.3
Other Oceania, 5.0")
mappings <- c("Asia"="Other Asian", "Africa"="Other African") # you add the others here
cc$MYCONTINENTS <- mappings[cc$CONTINENT]
cc <- left_join(cc, dat, by = c("MYCONTINENTS"="state"))
## 31 country names need to be mapped...
wm$region %>% unique %>% setdiff(cc$NAME)
# ...
# [7] "Canary Islands" "UK" "Heard Island"
# ...
## For example, UK is called United Kingdom in cc:
unique(grep("Kingdom", cc$NAME, value=T, ignore.case=T))
# [1] "United Kingdom"
mappings <- c("UK"="United Kingdom", "USA"="United States") # You add the others here
cc$NAME[match(mappings, cc$NAME)] <- names(mappings)
wm <- left_join(wm, cc[,c("NAME","MYCONTINENTS", "prob2")], by=c("region"="NAME"))
ggplot() +
geom_polygon(aes(x=long, y=lat, group=group, fill=prob2), wm, colour = NA) +
coord_quickmap()
您必须将您的大陆映射到数据库,并将数据库中的国家/地区名称映射到map_data
。之后,将+ geom_polygon(aes(x=long, y=lat, group=group, fill=prob2), wm, colour = NA)
添加到您的代码中。