Представление различных слоев на карте ggplot! р - PullRequest
1 голос
/ 03 апреля 2020
Цель

M состоит в том, чтобы представить 3 различных слоя информации на карте ggplot: 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 (MULTIPOLYGON, полученный из rnaturalearthdata), myKrige (фрейм данных, полученный из пространственногоPointsDataFrame) и roh (фрейм данных с точками данных широты и долготы ).

Это рисунок, который создает мой сценарий: enter image description here

Как вы можете видеть, разные слои находятся друг над другом. Но я бы хотел объединить geom_tile с базовым сюжетом.

Любая идея, как я могу сделать это легко. Или я должен переосмыслить полную фигуру?

1 Ответ

2 голосов
/ 03 апреля 2020

Здесь начальная точка, следующая примеру 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()
...