Построение SpatialPolygonDataFrame с использованием ggplot

У меня есть файл формы для большого Лондона. Я использую функцию readShapePoly из пакета maptools, чтобы загрузить ее в R как SpatialPolygonDataFrame.

Я хочу построить график этих многоугольников ... Что я уже сделал, используя базовую функцию plot в R. Результат выглядит так, как показано на этом изображении:

введите описание изображения здесь

Теперь я пытаюсь построить тот же файл формы, используя ggplot2, но у меня это не работает. Я получаю несколько странных линий на графике, как показано на рисунке: введите описание изображения здесь

Я использовал следующий код:

london.wards <- readShapePoly("~/TD/london_wards2013/london_wards2013.shp"
                          , proj4string=CRS(projString))
wards.count <- nrow(london.wards@data)
# assign id for each lsoa

london.wards@data$id <- 1:wards.count
wards.fort <- fortify(london.wards, region='id')
ggplot(wards.fort, aes(long, lat)) + geom_polygon(colour='black', fill='white')

где projString - строка проекции, описывающая проекцию, используемую для входного файла формы.


person Moustafa Alzantot    schedule 11.08.2013    source источник


Ответы (2)


Вам нужно добавить дополнительную эстетику group. Предполагая, что идентификатор многоугольника называется ID, синаткс будет выглядеть так:

ggplot(wards.fort, aes(x = long, y = lat, group = ID)) + 
   geom_polygon(colour='black', fill='white')
person Paul Hiemstra    schedule 11.08.2013

В качестве альтернативы можно перейти на интегрированный пакет sf хорошо с ggplot2 через геометрию geom_sf.

library(sf)
library(ggplot2)

# Download the London shapefile.
# Links at Statistical GIS Boundary Files for London:
# https://data.london.gov.uk/dataset/statistical-gis-boundary-files-london
dataset_url <- "https://data.london.gov.uk/download/statistical-gis-boundary-files-london/b381c92b-9120-45c6-b97e-0f7adc567dd2/London-wards-2014.zip"
download.file(dataset_url, destfile = "London-wards-2014.zip")
unzip("London-wards-2014.zip", exdir = "London-wards-2014")

# Read the shapefile
polys <- st_read("./London-wards-2014/London-wards-2014 (1)/London-wards-2014_ESRI/London_Ward.shp")
#> Reading layer `London_Ward' from data source `~\London-wards-2014\London-wards-2014 (1)\London-wards-2014_ESRI\London_Ward.shp' using driver `ESRI Shapefile'
#> Simple feature collection with 654 features and 7 fields
#> geometry type:  POLYGON
#> dimension:      XY
#> bbox:           xmin: 503568.2 ymin: 155850.8 xmax: 561957.5 ymax: 200933.9
#> epsg (SRID):    NA
#> proj4string:    +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601272 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs

# Fast plot/map
ggplot(polys) +
  geom_sf()

Создано 20 мая 2019 г. пакетом REPEX (v0.2.1)

person Valentin    schedule 20.05.2019