У меня> 100 вложенных полигонов в уникальном SpatialPolygonsDataFrame
. Я хочу нанести на них ggplot2
и , все они должны быть видны на карте , то есть наложение больших полигонов должно быть на заднем плане.
Я обнаружил, что могу добиться этого, используя alpha = 0
в функции geom_polygon
, но как назначить цвет заливки для каждого многоугольника?
Вот пример моего кода с двумя полигонами:
library(ggplot2)
Чтение CSV-файла с двумя шейп-файлами, объединенными, а затем преобразованными в data.frame с fortify
из maptools
.
#read csv file shape_1_2.csv
shape_1_2 = read.csv('shape_1_2.csv', stringsAsFactors = FALSE)
#plot
ggplot() +
geom_polygon(data = shape_1_2, aes(x = long, y = lat, group = group),
colour = 'black', size = 1, linetype = 'solid', alpha = 0)
и относительная карта:
![enter image description here](https://i.stack.imgur.com/iddNR.jpg)
Как я могу залить цветом эти два полигона?
Я пытался добавить fill='black'
в aes
и geom_polygon
, но это не работает.
Спасибо
Обновление
Прошу прощения, но я понял, что в моих данных в качестве примера НЕТ вложенных полигонов.
Итак, начиная со следующих data.frame согласно https://gis.stackexchange.com/questions/280671/r-create-multipolygon-from-overlapping-polygons-using-sf-package:
shape_df = data.frame(
lon = c(0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 2, 2, 0.8, 1, 1, 2, 2, 1, 1),
lat = c(0, 0, 1, 1.5, 0, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 0, 0, 1, 1, 0),
var = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3 ,3 ,3 ,3 ,3, 4 ,4 ,4, 4, 4)
)
И мой код для построения (с alpha=0
):
ggplot() +
geom_polygon(data = shape_df, aes(x = lon, y = lat, group = var),
colour = 'black', size = 1, linetype = 'solid', alpha = 0)
С относительной картой:
![enter image description here](https://i.stack.imgur.com/mG7C0.jpg)
Как мне заполнить различные области, присутствующие на карте, одним ИЛИ до 4 цветов, чтобы большие полигоны оставались на фоне меньших?