Tengo 3 archivos shp que representan la casa, la habitación y las camas de una casa, respectivamente. Necesito trazarlos en un gráfico usando R para que se superpongan entre sí. Sé que en la función plot
, puedo usar line
para trazar nuevas líneas en la parte superior de la gráfica existente, ¿hay algo equivalente en spplot
? Gracias.traza un archivo shp múltiple en un gráfico usando spplot en R
Respuesta
Usted puede utilizar el argumento sp.layout
en spplot
. Alternativamente, puedes usar ggplot2. Un código de ejemplo (no probado):
library(ggplot2)
shp1_data.frame = fortify(shp1)
shp1_data.frame$id = "shp1"
shp2_data.frame = fortify(shp2)
shp2_data.frame$id = "shp2"
shp = rbind(shp1_data.frame, shp2_data.frame)
ggplot(aes(x = x, y = y, group = group, col = id), data = shp) + geom_path()
En ggplot2
, columnas en los datos están vinculados a escalas gráficas en la trama. En este caso x
es la coordenada x, y
es la coordenada y, group
es una columna en el data.frame shp que especifica a qué polígono pertenece un punto, y col
es el color del polígono. La geometría que utilicé es geom_path
, que dibuja una serie de líneas basadas en el polígono input data.frame. Una alternativa es usar geom_poly
, que también es compatible con llenar el polígono.
Aquí es un enfoque, utilizando la función ingeniosa layer()
del paquete latticeExtra:
# (1) Load required libraries
library(sp)
library(rgeos) # For its readWKT() function
library(latticeExtra) # For layer()
# (2) Prepare some example data
sp1 = readWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))")
sp2 = readWKT("POLYGON((0 1,0.5 1.5,1 1,0 1))")
sp3 = readWKT("POLYGON((0.5 0,0.5 0.5,0.75 0.5,0.75 0, 0.5 0))")
# spplot provides "Plot methods for spatial data with attributes",
# so at least the first object plotted needs a (dummy) data.frame attached to it.
spdf1 <- SpatialPolygonsDataFrame(sp1, data=data.frame(1), match.ID=1)
# (3) Plot several layers in a single panel
spplot(spdf1, xlim=c(-0.5, 2), ylim=c(-0.5, 2),
col.regions="grey90", colorkey=FALSE) +
layer(sp.polygons(sp2, fill="saddlebrown")) +
layer(sp.polygons(sp3, fill="yellow"))
Alternativamente, se puede lograr el mismo resultado a través de sp.layout=
argumento spplot()
's. (Especificación de first=FALSE
asegura que el 'techo' y 'puerta' se trazarán después de/por encima del cuadrado gris dado como primer argumento spplot()
's.)
spplot(spdf1, xlim=c(-0.5, 2), ylim=c(-0.5, 2),
col.regions="grey90", colorkey=FALSE,
sp.layout = list(list(sp2, fill="saddlebrown", first=FALSE),
list(sp3, fill="yellow", first=FALSE)))
- 1. Cuadrícula en un gráfico R
- 2. ¿Cómo se traza un histograma apilado en 3D en R?
- 3. Cómo trazar un gráfico usando R, Java y JRI?
- 4. ¿Dividir o guardar un subconjunto de un archivo ESRI Shape SHP en un nuevo archivo?
- 5. Generando un gráfico de llamadas en R
- 6. ¿Cómo se sabe qué SRID usar para un archivo shp?
- 7. Convierte un Gráfico en un Marco de Datos en R
- 8. Traza un estancamiento en Ruby
- 9. Establecer R traza x eje para mostrar en y = 0
- 10. Convierta un shapefile (.shp) a xml/json
- 11. Trazando un archivo en R
- 12. Llamar R traza desde C++ usando RInside/Rcpp
- 13. Convierte (imprime) un archivo a PDF, ¿usando R? (en Windows)
- 14. Cómo crear un gráfico de clúster en R?
- 15. incrustación de un gráfico 3D animado R en PowerPoint
- 16. leyendo y trazando un archivo de forma esri en R
- 17. ¿Cómo crear un gráfico "inkblot" con R?
- 18. ¿Es posible rotar un gráfico en R (gráficos base)?
- 19. Crear un archivo csv vacío en R
- 20. lea un archivo MSWord en R
- 21. ¿Cómo obtener un archivo .csv en R?
- 22. guardando un archivo de datos en R
- 23. descomprimir un archivo tar.gz en R?
- 24. Crear un vector a partir de un archivo en R
- 25. R leyendo un archivo tsv usando la codificación específica
- 26. Descomprimir archivo gz usando R
- 27. ¿Cómo mejorar un mapa de trama espacial utilizando ggplot en comparación con spplot?
- 28. ¿Cómo puedo agregar un en dash a un gráfico en R?
- 29. R: eje x múltiple con anotaciones
- 30. Hacer un gráfico Gráfico en C#
¿Qué aspecto de spplot que no se puede hacer con la trama base es necesario? Con los objetos sp solo trazas el primero, luego traza con add = TRUE para superponer los otros. ¿Por qué llevar spplot a la mezcla? – Spacedman