在 ggplot 地图中表示不同的图层! R
Representing different layers in a ggplot map! R
M 的意图是在 ggplot 图中表示 3 个不同的信息层:
1. 地图本身使用 MULTIPOLYGON 文件
2. 使用 geom_tile() 的克里金估计
3. 使用 geom_point()
的数据点
我使用了以下脚本:
library(rnaturalearth)
library(rnaturalearthdata)
world <- ne_countries(scale = "medium", returnclass = "sf")
windows()
ggplot(data = world) +
geom_sf(color="black",fill="grey90") +
theme(panel.background = element_blank()) +
coord_sf(xlim = c(-12.3, 95), ylim = c(70, 22), expand = FALSE) +
geom_tile(data = myKrige, aes(x= x1, y= x2, fill =var1.pred)) +
geom_point(data = roh, aes(x = LON, y = LAT))
在此脚本中,我使用了三个数据集:world(从 rnaturalearthdata 获得的 MULTIPOLYGON)、myKrige(从 spatialPointsDataFrame 获得的数据框)和 roh(具有纬度和经度数据点的数据框)。
这是我的脚本生成的图形:
如您所见,不同的图层彼此重叠。但我想将 geom_tile 与底图很好地合并。
知道我怎样才能轻松做到这一点。还是我应该重新考虑完整的数字?
这里是起点,以 https://rpubs.com/nabilabd/118172
为例
library(rnaturalearth)
library(rnaturalearthdata)
library(ggplot2)
library(sf)
world <- ne_countries(scale = "medium", returnclass = "sf")
df <- data.frame(x=rnorm(10,sd = 3),
y=rnorm(10,sd = 3))
df <- sf::st_as_sf(df, coords=c("x","y"), crs = 4326, agr = "constant", remove = F)
ggplot(data = world) +
geom_sf() +
geom_sf(data=df) +
# The idea would then to add add a scale_fill_gradient() such
# as in https://rpubs.com/nabilabd/118172 , but I dont know
# how the kring data should look like.
coord_sf(xlim = c(-10,10), ylim=c(-10,10))
# example
lzn.kriged %>% as.data.frame %>%
ggplot(aes(x=x, y=y)) + geom_tile(aes(fill=var1.pred)) + coord_equal() +
scale_fill_gradient(low = "yellow", high="red") +
scale_x_continuous(labels=comma) + scale_y_continuous(labels=comma) +
theme_bw()
M 的意图是在 ggplot 图中表示 3 个不同的信息层: 1. 地图本身使用 MULTIPOLYGON 文件 2. 使用 geom_tile() 的克里金估计 3. 使用 geom_point()
的数据点我使用了以下脚本:
library(rnaturalearth)
library(rnaturalearthdata)
world <- ne_countries(scale = "medium", returnclass = "sf")
windows()
ggplot(data = world) +
geom_sf(color="black",fill="grey90") +
theme(panel.background = element_blank()) +
coord_sf(xlim = c(-12.3, 95), ylim = c(70, 22), expand = FALSE) +
geom_tile(data = myKrige, aes(x= x1, y= x2, fill =var1.pred)) +
geom_point(data = roh, aes(x = LON, y = LAT))
在此脚本中,我使用了三个数据集:world(从 rnaturalearthdata 获得的 MULTIPOLYGON)、myKrige(从 spatialPointsDataFrame 获得的数据框)和 roh(具有纬度和经度数据点的数据框)。
这是我的脚本生成的图形:
如您所见,不同的图层彼此重叠。但我想将 geom_tile 与底图很好地合并。
知道我怎样才能轻松做到这一点。还是我应该重新考虑完整的数字?
这里是起点,以 https://rpubs.com/nabilabd/118172
为例library(rnaturalearth)
library(rnaturalearthdata)
library(ggplot2)
library(sf)
world <- ne_countries(scale = "medium", returnclass = "sf")
df <- data.frame(x=rnorm(10,sd = 3),
y=rnorm(10,sd = 3))
df <- sf::st_as_sf(df, coords=c("x","y"), crs = 4326, agr = "constant", remove = F)
ggplot(data = world) +
geom_sf() +
geom_sf(data=df) +
# The idea would then to add add a scale_fill_gradient() such
# as in https://rpubs.com/nabilabd/118172 , but I dont know
# how the kring data should look like.
coord_sf(xlim = c(-10,10), ylim=c(-10,10))
# example
lzn.kriged %>% as.data.frame %>%
ggplot(aes(x=x, y=y)) + geom_tile(aes(fill=var1.pred)) + coord_equal() +
scale_fill_gradient(low = "yellow", high="red") +
scale_x_continuous(labels=comma) + scale_y_continuous(labels=comma) +
theme_bw()