我想在图像绘制地图的美国,但后来在海洋填写。
这里是我的出发点:
library(maps)
library(graphics)
image(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+"),
xlab = "lon", ylab = "lat")
map("state", add = TRUE)
不过,我想墨西哥的大西洋和墨西哥湾的纯色填充。
我想在图像绘制地图的美国,但后来在海洋填写。
这里是我的出发点:
library(maps)
library(graphics)
image(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+"),
xlab = "lon", ylab = "lat")
map("state", add = TRUE)
不过,我想墨西哥的大西洋和墨西哥湾的纯色填充。
好问题! 这个怎么样?
library(maps)
image(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+"),
xlab = "lon", ylab = "lat")
map("state", add = TRUE)
library(grid)
outline <- map("usa", plot=FALSE) # returns a list of x/y coords
xrange <- range(outline$x, na.rm=TRUE) # get bounding box
yrange <- range(outline$y, na.rm=TRUE)
xbox <- xrange + c(-2, 2)
ybox <- yrange + c(-2, 2)
# create the grid path in the current device
polypath(c(outline$x, NA, c(xbox, rev(xbox))),
c(outline$y, NA, rep(ybox, each=2)),
col="light blue", rule="evenodd")
我读保罗·马雷尔的(后面的人越过后要解决这个问题就grid
)最近的网格路径R-日报的文章(PDF这里) 。
记得:
“这不是你画什么,这是什么,你不画” - 保罗马雷尔(R杂志卷4/2)
下面是对不通过交叉/差分多边形工作的解决方案的变体。 该数据集wrld_simpl
可以通过任何其他SpatialPolygons *对象来代替。
library(maptools)
library(raster)
library(rgeos)
data(wrld_simpl)
x <- list(x=-90:-75, y = 25:40, z = outer(1:15, 1:15, "+"))
## use raster to quickly generate the polymask
## (but also use image2Grid to handle corner coordinates)
r <- raster(image2Grid(x))
p <- as(extent(r), "SpatialPolygons")
wmap <- gIntersection(wrld_simpl, p)
oceanmap <- gDifference(p, wmap)
image(r)
plot(oceanmap, add = TRUE, col = "light blue")
(地图数据转换到这可能是艰难的,我不能做到这一点很容易maptools::map2SpatialPolygons
,它会采取一些变通方法)
我可以回答你的问题的标题(“我怎样才能颜色海洋在地图美国蓝色的?”),但不是因为它在你的问题中身体所描述的具体情况(“我想画地图美国在图像中,但随后在海洋“)填补。
不过,我包括情况下,这个答案,这是别人谁碰到你的问题非常有用。
map(database='state', bg='light blue')
该bg
选项提供的淡蓝色到地图的背景,其中包括海洋的颜色。