我是新来的,我正试图在沿海地区的地图上绘制点 - 因此我想展示一个国家的海岸线和颜色,周围是相邻的国家。
我的代码是
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))
有谁知道如何使用世界各地做到这一点?它可能非常简单,我还没有解决它。
答案 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)
答案 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