如何在R map包中为单个国家着色(worldhires)

时间:2014-11-29 14:16:19

标签: r colors maps

我是新来的,我正试图在沿海地区的地图上绘制点 - 因此我想展示一个国家的海岸线和颜色,周围是相邻的国家。

我的代码是

library(maps)  
library(mapdata)

map("worldHires", xlim=c(-90,-70), ylim=c(-20,-2), # Re-defines the latitude and longitude range
    col = "gray", fill=TRUE)

但是我想在秘鲁上色。到目前为止我设法做到了这一点:

map('worldHires', 'Peru', col = "grey90", fill=TRUE, xlim=c(-90,-70), ylim=c(-20,-2))

但这并没有显示相邻的国家,我真的想展示所有相邻的国家,只是为秘鲁着色。

我在另一个使用简单地图工具的线程中看过建议 - 但细节略少(见下文)

library(maptools)

data(wrld_simpl)
plot(wrld_simpl, 
     col = c(gray(.80), "red")[grepl("Peru", wrld_simpl@data$NAME) + 1], 
xlim=c(-90,-70), ylim=c(-20,-2))

有谁知道如何使用世界各地做到这一点?它可能非常简单,我还没有解决它。

2 个答案:

答案 0 :(得分:2)

诀窍是使用map()提取秘鲁边界,然后在工作地图轮廓上过度绘制秘鲁填充。

library(maps)  
library(mapdata)

peru <- map("worldHires", regions="Peru", plot=FALSE, fill=TRUE)

map("worldHires", xlim=c(-100,-30), ylim=c(-30,10))
map(peru, col="red", fill=TRUE, add=TRUE)

enter image description here

答案 1 :(得分:0)

通过ggplot的Hadleyverse版本:

library(maps)  
library(mapdata)
library(ggplot2)

coast_map <- fortify(map("worldHires", fill=TRUE, plot=FALSE))

gg <- ggplot()
gg <- gg + geom_map(data=coast_map, map=coast_map,
                    aes(x=long, y=lat, map_id=region),
                    fill="white", color="black")
gg <- gg + geom_map(data=data.frame(region="Peru"), map=coast_map,
                    aes(map_id=region), fill="steelblue")
gg <- gg + xlim(-90,-70) + ylim(-20,-2)
gg <- gg + coord_map()
gg <- gg + theme_bw()
gg

enter image description here