Un placer al trabajar con datos espaciales es su visualizacion.

Librería Sp

Primeramente cargamos el paquete sp, el cual consiste de un conjunto de clases y métodos para el manejo de datos espaciales, ya sean puntos, líneas o polígonos.

library(sp)

Datos: Meuse

Para realizar diferentes gráficos, utilizaremos un conjunto de datos de tipo “DataFrame”" proporcionado por el paquete sp que comprende cuatro metales pesados medidos en la capa superior del suelo en una llanura aluvial a lo largo del río Meuse.

data(meuse)  
#class(meuse) # data.frame
head(meuse)

Luego, procedemos a establecer coordenadas espaciales para crear un objeto espacial, o recuperar las coordenadas espaciales de un objeto espacial. Para ello usamos el comando `coordinates.

coordinates(meuse) = c("x", "y") # Convierte a datos espaciales
class(meuse) 
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"

Puntos

Un punto de localizacion geografica, el cual viene dado por sus coordenadas geograficas.
Plot es la funcion mas usada en R para graficar, y con ella graficamos los puntos del dataset.
Nota: pch indica el simbolo que queremos, especificamente 1 hace referencia a puntos.

plot(meuse, pch=1) 
title("Puntos") #Asignamos un titulo a nuestra grafica.

Líneas

Conjunto de puntos ordenados conectados por un segmento de recta. Para su gráfica, se convierten las coordenadas (x,y) a una lista de líneas, uniendo los puntos en secuencia; y mediante SpatialLines se convierte esta lista de líneas en líneas espaciales.

# Asignamos las coordenadas obtenidas anteriormente a la variable cc
cc = coordinates(meuse)  
m.sl = SpatialLines(list(Lines(list(Line(cc)), "line1"))) 
plot(m.sl) #Graficamos estas lineas espaciales
title("Líneas") #Asignamos un titulo a la grafica

Polígonos

Para esto, cargamos los datos que consisten en un contorno del río Meuse en el área a pocos kilómetros alrededor del conjunto de datos Meuse. Este consiste de dos columnas que contienen 176 coordenadas.

data(meuse.riv) 
head(meuse.riv)
         [,1]     [,2]
[1,] 182003.7 337678.6
[2,] 182136.6 337569.6
[3,] 182252.1 337413.6
[4,] 182314.5 337284.7
[5,] 182331.5 337122.3
[6,] 182323.9 336986.2

Luego, el comando Polygon dibuja una lista de polígonos cuyos vértices están dados por \(x\) e \(y\) (meuse.riv). Y el comando Polygons establece coordenadas espaciales para crear datos espaciales a partir de la lista de polígonos anterior.

meuse.lst = list(Polygons(list(Polygon(meuse.riv)), "meuse.riv")) 
#Creamos objetos SpatialPolygons a partir de una lista de poligonos:
meuse.pol = SpatialPolygons(meuse.lst)  # Poligonos espaciales
plot(meuse.pol, col = "grey") #Graficamos
title("Polígono") #Asignamos titulo

Poligonos y puntos

Un mapa se vuelve más legible cuando combinamos varios elementos, para este ejemplo combinamos polígonos y puntos.

plot(meuse, pch=1, col="blue") #Graficamos los puntos iniciales
plot(meuse.pol, col = "grey", add = TRUE) #Graficamos los poligonos
title("Polígono y puntos") #Asignamos titulo

Usando la función spplot

Lattice: es un paquete que mejora los gráficos en R proporcionando mejores valores predeterminados.

spplot: es un paquete que utiliza métodos de trazados de enrejados para datos espaciales con atributos, en este caso “Zinc”.

# Grafica de las concentraciones de Zinc en las diferentes coordenadas
library(lattice)
spplot(meuse, c("zinc"), main="Zinc concentrations (ppm)")

Usando la función ggplot

ggplot ofrece un poderoso lenguaje grafico para crear tramas elegantes y complejas.

library(ggplot2)
#El metodo fortify convierte un objeto S3 en un dataframe para ggplot2.
# methods(fortify)
# as fuerza un objeto a una clase determinada.
m = as(meuse, "data.frame")
ggplot(m, aes(x,y)) + geom_point() + coord_equal() #Graficamos

LS0tDQp0aXRsZTogIjEuIFZpc3VhbGl6YWNpw7NuIGRlIGRhdG9zIGVzcGFjaWFsZXMiDQphdXRob3I6ICJFaWxpbiBMdW5hIE0uIg0KZGF0ZTogIjE5IGRlIGZlYnJlcm8gZGUgMjAyMSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCi0tLQ0KDQpVbiBwbGFjZXIgYWwgdHJhYmFqYXIgY29uIGRhdG9zIGVzcGFjaWFsZXMgZXMgc3UgdmlzdWFsaXphY2lvbi4NCg0KIyBMaWJyZXLDrWEgU3ANClByaW1lcmFtZW50ZSBjYXJnYW1vcyBlbCBwYXF1ZXRlIGBzcGAsIGVsIGN1YWwgY29uc2lzdGUgZGUgdW4gY29uanVudG8gZGUgY2xhc2VzIHkgbcOpdG9kb3MgcGFyYSBlbCBtYW5lam8gZGUgZGF0b3MgZXNwYWNpYWxlcywgeWEgc2VhbiBwdW50b3MsIGzDrW5lYXMgbyBwb2zDrWdvbm9zLg0KDQpgYGB7cn0NCmxpYnJhcnkoc3ApDQpgYGANCg0KIyBEYXRvczogTWV1c2UNCg0KUGFyYSByZWFsaXphciBkaWZlcmVudGVzIGdyw6FmaWNvcywgdXRpbGl6YXJlbW9zIHVuIGNvbmp1bnRvIGRlIGRhdG9zIGRlIHRpcG8g4oCcRGF0YUZyYW1l4oCdIiBwcm9wb3JjaW9uYWRvIHBvciBlbCBwYXF1ZXRlIHNwIHF1ZSBjb21wcmVuZGUgY3VhdHJvIG1ldGFsZXMgcGVzYWRvcyBtZWRpZG9zIGVuIGxhIGNhcGEgc3VwZXJpb3IgZGVsIHN1ZWxvIGVuIHVuYSBsbGFudXJhIGFsdXZpYWwgYSBsbyBsYXJnbyBkZWwgcsOtbyBNZXVzZS4NCg0KYGBge3J9DQpkYXRhKG1ldXNlKSAgDQojY2xhc3MobWV1c2UpICMgZGF0YS5mcmFtZQ0KaGVhZChtZXVzZSkNCmBgYA0KIA0KTHVlZ28sIHByb2NlZGVtb3MgYSBlc3RhYmxlY2VyIGNvb3JkZW5hZGFzIGVzcGFjaWFsZXMgcGFyYSBjcmVhciB1biBvYmpldG8gZXNwYWNpYWwsIG8gcmVjdXBlcmFyIGxhcyBjb29yZGVuYWRhcyBlc3BhY2lhbGVzIGRlIHVuIG9iamV0byBlc3BhY2lhbC4gUGFyYSBlbGxvIHVzYW1vcyBlbCBjb21hbmRvIGBgY29vcmRpbmF0ZXNgLg0KDQpgYGB7cn0NCmNvb3JkaW5hdGVzKG1ldXNlKSA9IGMoIngiLCAieSIpICMgQ29udmllcnRlIGEgZGF0b3MgZXNwYWNpYWxlcw0KY2xhc3MobWV1c2UpIA0KYGBgDQoNCiMgUHVudG9zDQpVbiBwdW50byBkZSBsb2NhbGl6YWNpb24gZ2VvZ3JhZmljYSwgZWwgY3VhbCB2aWVuZSBkYWRvIHBvciBzdXMgY29vcmRlbmFkYXMgZ2VvZ3JhZmljYXMuICANCmBQbG90YCBlcyBsYSBmdW5jaW9uIG1hcyB1c2FkYSBlbiBSIHBhcmEgZ3JhZmljYXIsIHkgY29uIGVsbGEgZ3JhZmljYW1vcyBsb3MgcHVudG9zIGRlbCBkYXRhc2V0LiAgDQpOb3RhOiBgcGNoYCBpbmRpY2EgZWwgc2ltYm9sbyBxdWUgcXVlcmVtb3MsIGVzcGVjaWZpY2FtZW50ZSAxIGhhY2UgcmVmZXJlbmNpYSBhIHB1bnRvcy4NCg0KYGBge3J9DQpwbG90KG1ldXNlLCBwY2g9MSkgDQp0aXRsZSgiUHVudG9zIikgI0FzaWduYW1vcyB1biB0aXR1bG8gYSBudWVzdHJhIGdyYWZpY2EuDQpgYGANCg0KDQojIEzDrW5lYXMNCkNvbmp1bnRvIGRlIHB1bnRvcyBvcmRlbmFkb3MgY29uZWN0YWRvcyBwb3IgdW4gc2VnbWVudG8gZGUgcmVjdGEuIFBhcmEgc3UgZ3LDoWZpY2EsIHNlIGNvbnZpZXJ0ZW4gbGFzIGNvb3JkZW5hZGFzICh4LHkpIGEgdW5hIGxpc3RhIGRlIGzDrW5lYXMsIHVuaWVuZG8gbG9zIHB1bnRvcyBlbiBzZWN1ZW5jaWE7IHkgbWVkaWFudGUgU3BhdGlhbExpbmVzIHNlIGNvbnZpZXJ0ZSBlc3RhIGxpc3RhIGRlIGzDrW5lYXMgZW4gbMOtbmVhcyBlc3BhY2lhbGVzLg0KDQpgYGB7cn0NCiMgQXNpZ25hbW9zIGxhcyBjb29yZGVuYWRhcyBvYnRlbmlkYXMgYW50ZXJpb3JtZW50ZSBhIGxhIHZhcmlhYmxlIGNjDQpjYyA9IGNvb3JkaW5hdGVzKG1ldXNlKSAgDQptLnNsID0gU3BhdGlhbExpbmVzKGxpc3QoTGluZXMobGlzdChMaW5lKGNjKSksICJsaW5lMSIpKSkgDQpwbG90KG0uc2wpICNHcmFmaWNhbW9zIGVzdGFzIGxpbmVhcyBlc3BhY2lhbGVzDQp0aXRsZSgiTMOtbmVhcyIpICNBc2lnbmFtb3MgdW4gdGl0dWxvIGEgbGEgZ3JhZmljYQ0KYGBgDQoNCiMgUG9sw61nb25vcw0KDQpQYXJhIGVzdG8sIGNhcmdhbW9zIGxvcyBkYXRvcyBxdWUgY29uc2lzdGVuIGVuIHVuIGNvbnRvcm5vIGRlbCByw61vIE1ldXNlIGVuIGVsIMOhcmVhIGEgcG9jb3Mga2lsw7NtZXRyb3MgYWxyZWRlZG9yIGRlbCBjb25qdW50byBkZSBkYXRvcyBNZXVzZS4gRXN0ZSBjb25zaXN0ZSBkZSBkb3MgY29sdW1uYXMgcXVlIGNvbnRpZW5lbiAxNzYgY29vcmRlbmFkYXMuDQoNCmBgYHtyfQ0KZGF0YShtZXVzZS5yaXYpIA0KaGVhZChtZXVzZS5yaXYpDQpgYGANCiAgIA0KTHVlZ28sIGVsIGNvbWFuZG8gYFBvbHlnb25gIGRpYnVqYSB1bmEgbGlzdGEgZGUgcG9sw61nb25vcyBjdXlvcyB2w6lydGljZXMgZXN0w6FuIGRhZG9zIHBvciAkeCQgZSAkeSQgKG1ldXNlLnJpdikuIFkgZWwgY29tYW5kbyBgUG9seWdvbnNgIGVzdGFibGVjZSBjb29yZGVuYWRhcyBlc3BhY2lhbGVzIHBhcmEgY3JlYXIgZGF0b3MgZXNwYWNpYWxlcyBhIHBhcnRpciBkZSBsYSBsaXN0YSBkZSBwb2zDrWdvbm9zIGFudGVyaW9yLg0KDQpgYGB7cn0NCm1ldXNlLmxzdCA9IGxpc3QoUG9seWdvbnMobGlzdChQb2x5Z29uKG1ldXNlLnJpdikpLCAibWV1c2Uucml2IikpIA0KI0NyZWFtb3Mgb2JqZXRvcyBTcGF0aWFsUG9seWdvbnMgYSBwYXJ0aXIgZGUgdW5hIGxpc3RhIGRlIHBvbGlnb25vczoNCm1ldXNlLnBvbCA9IFNwYXRpYWxQb2x5Z29ucyhtZXVzZS5sc3QpICAjIFBvbGlnb25vcyBlc3BhY2lhbGVzDQpwbG90KG1ldXNlLnBvbCwgY29sID0gImdyZXkiKSAjR3JhZmljYW1vcw0KdGl0bGUoIlBvbMOtZ29ubyIpICNBc2lnbmFtb3MgdGl0dWxvDQpgYGANCg0KIyBQb2xpZ29ub3MgeSBwdW50b3MNClVuIG1hcGEgc2UgdnVlbHZlIG3DoXMgbGVnaWJsZSBjdWFuZG8gY29tYmluYW1vcyB2YXJpb3MgZWxlbWVudG9zLCBwYXJhIGVzdGUgZWplbXBsbyBjb21iaW5hbW9zIHBvbMOtZ29ub3MgeSBwdW50b3MuDQoNCmBgYHtyfQ0KcGxvdChtZXVzZSwgcGNoPTEsIGNvbD0iYmx1ZSIpICNHcmFmaWNhbW9zIGxvcyBwdW50b3MgaW5pY2lhbGVzDQpwbG90KG1ldXNlLnBvbCwgY29sID0gImdyZXkiLCBhZGQgPSBUUlVFKSAjR3JhZmljYW1vcyBsb3MgcG9saWdvbm9zDQp0aXRsZSgiUG9sw61nb25vIHkgcHVudG9zIikgI0FzaWduYW1vcyB0aXR1bG8NCmBgYA0KDQojIFVzYW5kbyBsYSBmdW5jacOzbiBgc3BwbG90YA0KDQpgTGF0dGljZTpgIGVzIHVuIHBhcXVldGUgcXVlIG1lam9yYSBsb3MgZ3LDoWZpY29zIGVuIFIgcHJvcG9yY2lvbmFuZG8gbWVqb3JlcyB2YWxvcmVzIHByZWRldGVybWluYWRvcy4NCg0KYHNwcGxvdDpgIGVzIHVuIHBhcXVldGUgcXVlIHV0aWxpemEgbcOpdG9kb3MgZGUgdHJhemFkb3MgZGUgZW5yZWphZG9zIHBhcmEgZGF0b3MgZXNwYWNpYWxlcyBjb24gYXRyaWJ1dG9zLCBlbiBlc3RlIGNhc28g4oCcWmluY+KAnS4NCg0KYGBge3J9DQojIEdyYWZpY2EgZGUgbGFzIGNvbmNlbnRyYWNpb25lcyBkZSBaaW5jIGVuIGxhcyBkaWZlcmVudGVzIGNvb3JkZW5hZGFzDQpsaWJyYXJ5KGxhdHRpY2UpDQpzcHBsb3QobWV1c2UsIGMoInppbmMiKSwgbWFpbj0iWmluYyBjb25jZW50cmF0aW9ucyAocHBtKSIpDQpgYGANCg0KIyBVc2FuZG8gbGEgZnVuY2nDs24gYGdncGxvdGANCg0KYGdncGxvdGAgb2ZyZWNlIHVuIHBvZGVyb3NvIGxlbmd1YWplIGdyYWZpY28gcGFyYSBjcmVhciB0cmFtYXMgZWxlZ2FudGVzIHkgY29tcGxlamFzLg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCiNFbCBtZXRvZG8gZm9ydGlmeSBjb252aWVydGUgdW4gb2JqZXRvIFMzIGVuIHVuIGRhdGFmcmFtZSBwYXJhIGdncGxvdDIuDQojIG1ldGhvZHMoZm9ydGlmeSkNCiMgYXMgZnVlcnphIHVuIG9iamV0byBhIHVuYSBjbGFzZSBkZXRlcm1pbmFkYS4NCm0gPSBhcyhtZXVzZSwgImRhdGEuZnJhbWUiKQ0KZ2dwbG90KG0sIGFlcyh4LHkpKSArIGdlb21fcG9pbnQoKSArIGNvb3JkX2VxdWFsKCkgI0dyYWZpY2Ftb3MNCmBgYA==