アメリカとカナダの格子セルに色をつけたいです。私の目標は、この質問と非常に似ています: R Plot Filled Longitude-Latitude Grid Cells on Map ただし、その質問は米国のみを扱っており、カナダを追加する方法がわかりません。
ここにあるコードを変更することで、米国とカナダの地図を描くことができました: https://groups.google.com/forum/#!topic/ggplot2/KAKhoE0GO4U
library(ggplot2)
library(rgeos)
library(maps)
library(maptools)
PolygonCoords <- function(polygon) {
polygons <- polygon@Polygons
coords.list <- lapply(seq_along(polygons), function(i) {
# Extract the group, sequence, area, longitude, and latitude.
coords <- polygons[[i]]@coords
cbind(i, 1:nrow(coords), polygons[[i]]@area, coords)
})
coords.df <- as.data.frame(do.call(rbind, coords.list))
names(coords.df) <- c("order", "seq", "area", "long", "lat")
return(coords.df)
}
ConvertWorldSimple <- function(mapdata, min.area = 0) {
coords.list <- lapply(mapdata@polygons, PolygonCoords)
ncoords <- sapply(coords.list, nrow)
coords.df <- do.call(rbind, coords.list)
coords.df$country <- rep(mapdata@data$NAME, ncoords)
country.group <- factor(paste(coords.df$country, coords.df$order))
coords.df$group <- as.numeric(country.group)
coords.df <- coords.df[coords.df$area >= min.area, ]
return(coords.df)
}
data("wrld_simpl")
world <- ConvertWorldSimple(wrld_simpl, min.area = 0.1)
world <- world[world$country %in% c('United States', 'Canada'),]
na <- data.frame(
country = c("United States", "Canada"),
is.north.america = TRUE)
world <- merge(world, na, all.x = TRUE)
world$is.north.america[is.na(world$is.north.america)] <- FALSE
world <- world[order(world$order, world$seq), ]
ggplot(world, aes(long, lat, group = group)) +
geom_polygon(aes(fill = is.north.america)) +
geom_path(color = "white", size = 0.1) +
scale_fill_manual(values = c("darkgray"), guide = "none") +
scale_y_continuous("", breaks=(-2:2) * 30) +
scale_x_continuous("", breaks=(-4:4) * 45) +
coord_equal() +
theme_bw()
ここにあるグリッド セルの偽の属性データを作成するコードを次に示します。
set.seed(1234)
xlim = c(-110,-100)
ylim = c(40,60)
dat_grid = expand.grid(x = xlim[1]:xlim[2], y = ylim[1]:ylim[2])
dat_grid$z = runif(nrow(dat_grid))
head(dat_grid)
以下はggplot2
、以前のスタック オーバーフローの投稿で使用されたコードで、Lower 48 のマップに属性のグリッドを重ね合わせたものです。
library(ggplot2)
library(maps)
us_states <- map_data("state")
(ggplot(aes(x=x,y=y,fill=z),data=dat_grid) + geom_tile())+geom_polygon(data=us_states,aes(x=long, y=lat, group=group), colour="black", fill="white", alpha=0)
ggplot
2 つのステートメントを組み合わせて、偽の属性データのグリッドを米国とカナダの地図に重ねるにはどうすればよいですか? アドバイスありがとうございます。