10 votos

R fortificar causando polígonos de la lágrima

Estoy estoy teniendo algunos problemas para conspirar mis datos espaciales con ggplot2. El mapa se ve bien cuando se trazan utilizando spplot, así que estoy asumiendo que la ruptura se produce en la fortificar etapa.

El código es el siguiente:

#install the packages
library(rgdal)
library(mapproj)
library(raster)
library(rgeos)
library(ggplot2)
library(plyr)

if (!require(gpclib)) install.packages("gpclib", type="source")
gpclibPermit()

setwd("C:/Users/My Documents")

#read in laa to regional mapping
#must aggregate to higher level regions as data is provided at this higher level
laa_region_mapping <- read.csv("laa_region.csv", header = TRUE)

#read in LAA polygons
laa_polygons <- readOGR("ctyua_ew_generalised_WGS84.json", "OGRGeoJSON")

#merge by laa to add region column to polygon data
laa_polygons_with_region_data <- merge(laa_polygons, laa_region_mapping,
                                by.x = "CTYUA13NM", by.y = "LAA",
                                all.x = TRUE, all.y = TRUE)

# aggregate laa polygons by the 21 regions (aggregate by regoin_code)
region_polygons <- raster::aggregate(laa_polygons_with_region_data, "region_code")

El agregado ha trabajado, como puede verse por el spplot (nota: no he encontrado cómo agregado por las regiones de este post SE: Join espacial de los polígonos por el código R)

#plot the resulting polygons using spplot
spplot(region_polygons)

enter image description here

Pero cuando me fortificar los datos espaciales para que yo pueda usar ggplot, hay lagrimeo alrededor de los bordes.

#fortify and merge to create the data frame ggplot will show on the map
region_polygons@data$id <- rownames(region_polygons@data)
region_polygons.points <- fortify(region_polygons, region = "id")

# plot the fortified df using ggplot
ggplot(data = region_polygons.points, aes(x= long, y = lat, group = id, fill=id)) + geom_polygon()

enter image description here

Cómo puedo detener esta ruptura?

He mirado en respuestas similares en la SE, pero las respuestas sugieren que el desgarro se produce durante una combinación (¿Cuál es la causa de la 'desgarro' de los polígonos (artefactos) con R, ggplot y geom_polygon?). Creo que mi desgarro se produce en la fortificar como escenario el spplot antes de fortificar ve bien.

Cualquier ayuda es muy apreciada! Por favor, hágamelo saber si puedo hacer mi pregunta más útil - soy muy nuevo en SÍ.

Gracias.

15voto

fastcall Puntos 874

Usted debe utilizar group=group en la aesde asignación. Aquí está una reproducible ejemplo de su problema:

library("ggplot2")
library("raster")

x <- getData('GADM', country='GBR', level=2)
y <- fortify(x, region="NAME_2")
head(y)
#     long   lat order  hole piece      group       id
# 1 -2.049 57.23     1 FALSE     1 Aberdeen.1 Aberdeen
# 2 -2.049 57.23     2 FALSE     1 Aberdeen.1 Aberdeen
# 3 -2.049 57.23     3 FALSE     1 Aberdeen.1 Aberdeen
# 4 -2.050 57.23     4 FALSE     1 Aberdeen.1 Aberdeen
# 5 -2.050 57.23     5 FALSE     1 Aberdeen.1 Aberdeen
# 6 -2.050 57.23     6 FALSE     1 Aberdeen.1 Aberdeen


# wrong group aesthetic
ggplot(data=y, aes(y=lat, x=long, group=id, fill=id)) +
  geom_polygon() + 
  guides(fill=FALSE)

wronge aes-group

# fixed plot
ggplot(data=y, aes(y=lat, x=long, group=group, fill=id)) +
  geom_polygon() +
  guides(fill=FALSE)

fixed plot

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X