Я все еще не уверен, что мне не хватает детали того, что вы ищете, но ggplot2
рисует слои в том порядке, в котором вы их предоставляете. Так что-то вроде
ggplot(data) +
geom_col() +
geom_point(...) +
geom_line(...)
нарисует столбцы, затем точки над ними, затем линии поверх предыдущих слоев.
То же самое относится к sf
графикам, что позволяет легко создать график, подобный этому, из нескольких географических уровней.
(я использую rmapshaper::ms_simplify
на sf
объектах только для того, чтобы упростить их и ускорить процесс построения.)
library(dplyr)
library(ggplot2)
library(sf)
library(raster)
distSF <- st_as_sf(getData("GADM",country="IND",level=2)) %>% rmapshaper::ms_simplify()
...
Затем вы можете построить график, сложив слои в том порядке, в котором они вам нужны. Помните, что если вам нужно выполнить другие вычисления с любым из этих sf
s, вы можете сделать это заранее или внутри вашего geom_sf
.
ggplot() +
geom_sf(data = distSF, fill = "gold", size = 0.1) +
geom_sf(data = stateSF, color = "white", fill = NA) +
geom_sf(data = countryborder, color = "blue", fill = NA)

Что касается попытки добавить один график к другому: ggplot2
работает в слоях, поэтому вы создаете один базовый объект ggplot
, а затем добавляете геометрию поверх него. Таким образом, вы могли бы сделать, например, два действительных графика:
state_plot <- ggplot(stateSF) +
geom_sf(color = "white", fill = NA)
country_plot <- ggplot(countryborder) +
geom_sf(color = "blue", fill = NA)
Но вы не можете добавить их, потому что у вас будет 2 базовых ggplot
объекта. Это должно быть ошибкой, которую вы упомянули:
state_plot +
country_plot
#> Error: Don't know how to add country_plot to a plot
Вместо этого, если вам нужно построить график, добавьте что-нибудь еще поверх него, сделайте основание ggplot
, затем добавьте геометрические слои, такие как geom_sf
с другим набором данных.
state_plot +
geom_sf(data = countryborder, fill = NA, color = "blue")

Создано в 2018-10-29 пакетом Представить (v0.2.1)