Исходя из этого вопроса о коробочных диаграммах и моего собственного вопроса о создании карты Индии, что является хорошим способом избежать повторения кода в ggplot при работе с различными слоями карта
Ниже представлен представитель. Я думал, что самый простой способ будет:
1. сохранить базовую карту с государственными и национальными границами
2. добавить слой местности (отображение переменных).
Представьте себе повторение шага 2 для десятков переменных.
library(ggplot2)
library(sf)
library(raster)
# Download district and state data (should be less than 10 Mb in total)
distSF <- st_as_sf(getData("GADM",country="IND",level=2))
stateSF <- st_as_sf(getData("GADM",country="IND",level=1))
# Add country border
countryborder <- st_union(stateSF)
# STEP 1: Basic plot
basicIndia <- ggplot() +
geom_sf(data = stateSF, color = "white", fill = NA) +
geom_sf(data = countryborder, color = "blue", fill = NA) +
theme_dark()
# STEP 2: Adding the data layer underneath so it doesn't cover the other borders
indiaMap$layers <- c(geom_sf(data = distSF, fill = "red")[[1]], indiaMap$layers[[2:3]])
indiaMap$layers <- c(geom_sf(data = distSF, fill = "gold")[[1]], indiaMap$layers[[2:3]])
indiaMap
Однако, таким образом, невозможно внести даже незначительные изменения в этот дополнительный слой, например, добавить другой заголовок. Следующее, очевидно, не работает, но делает мою точку зрения.
basicIndia$layers <- c(
geom_sf(data = distSF, aes(fill = GINI), color = "white", size = 0.2)[[1]] +
labs(title = "Gini coefficient"),
basicIndia$layers)
Я неправильно подхожу к проблеме? Это то, что нельзя сделать?