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==