Я безуспешно пытался построить объекты points
и multipolygon
sf
. Ниже приводится воспроизводимый пример моей проблемы.
library(sf)
library(magrittr)
library(RColorBrewer)
nc <- st_read(system.file("shape/nc.shp", package = "sf")) %>%
st_transform(crs = 4326)
points <- data.frame(p = seq(15, 75, 15),
long = c(-85, -80, -78, -75, -82),
lat = c(34, 36, 37, 38, 35)) %>%
st_as_sf(coords = c('long', 'lat'), crs = 4326)
points$p_cut <- cut(points$p, seq(0, 100, 20))
#plot1
plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
pal = brewer.pal(5, 'Paired'))
plot(st_geometry(nc), axes = TRUE, graticule = TRUE, add = TRUE)
multipolygon
не появляется, но если я инвертирую порядок:
#plot2
plot(st_geometry(nc), axes = TRUE, graticule = TRUE)
plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
pal = brewer.pal(5, 'Paired'), add = TRUE)
В финальном сюжете отсутствуют две точки и ключ.
Как я могу решить эти проблемы? Я думал об изменении bbox
объекта multipolygon
, чтобы на втором графике появлялись недостающие точки, но я не мог найти для этого способа.
Любая помощь приветствуется.
ИЗМЕНИТЬ.
Изменен epsg файла multipolygon
, чтобы он соответствовал points
epsg. Однако проблемы остаются.
РЕДАКТИРОВАТЬ2. Это странно, но случайный запуск кода, кажется, дает "правильный график". Я использовал именно этот порядок (скопирован с консоли):
> plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
+ pal = brewer.pal(5, 'Paired'))
> plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
+ pal = brewer.pal(5, 'Paired'), add = TRUE)
> plot(st_geometry(nc), axes = TRUE, graticule = TRUE, add = TRUE)
> #plot2
> plot(st_geometry(nc), axes = TRUE, graticule = TRUE)
> plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
+ pal = brewer.pal(5, 'Paired'), add = TRUE)
> # plot1
> plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
+ pal = brewer.pal(5, 'Paired'))
> plot(st_geometry(nc), axes = TRUE, graticule = TRUE, add = TRUE)
> plot(points['p_cut'], axes = TRUE, graticule = TRUE, pch = 16,
+ pal = brewer.pal(5, 'Paired'), add = TRUE)
и получил это:
Появляется одна из недостающих точек (-85,34), но есть повторяющиеся точки. Также ключ не отображается должным образом. Также кажется, что расположение повторяющихся точек и размер мультиполигона зависят от размера средства просмотра сюжета.