r - ggmap examples
Los polĂgonos recortan bien ggplot2/ggmap en diferentes niveles de zoom (1)
Estoy jugando con un conjunto de datos espaciales (en su mayoría polígonos sobre un área de una ciudad) y me gustaría producir vistas diferentes, basadas en diferentes niveles de zoom. Todo está bien cuando tengo el cuadro de límite de trazado más grande que el área que contiene los polígonos. Pero en un acercamiento, algunos polígonos obtienen partes que están fuera del cuadro del límite y la salida de esos polígonos es problemática: los puntos del polígono fuera del cuadro del límite no se muestran, lo que da como resultado polígonos que no se recortan en los límites del cuadro del límite ( como se esperaría) pero más bien no se consideran. los polígonos están incompletos y el polígono solo une los puntos que quedan en la gráfica (comportamiento normal, pero no deseado).
Un buen ejemplo digno de toda la discusión, aquí hay una demostración del problema:
#initialisation
library(ggmap)
require(MASS)
data(zips)
# overview
ggmap(get_map(maptype = "satellite", zoom = 8), extent = "device") +
geom_polygon(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = NA, fill = "red", alpha = .5) +
geom_path(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = "white", alpha = .7, size = .4)
# problematic view
x11()
ggmap(get_map(maptype = "satellite", zoom = 12), extent = "device") +
geom_polygon(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = NA, fill = "red", alpha = .5) +
geom_path(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = "white", alpha = .7, size = .4)
¿sabría usted de una buena técnica para recortar adecuadamente los polígonos en los límites del cuadro del límite de la parcela? gracias por tu ayuda
Pascal
En general, este recorte se debe al zoom utilizando los límites de escala (que dejan caer puntos fuera del rango) en lugar de usar los límites de coordenadas (que es un verdadero zoom, simplemente dibujando las partes adentro con las partes fuera del rango aún allí). ggmap
no tiene una forma sencilla de indicar que se debe usar el segundo tipo de zoom, pero al mirar la función, las partes relevantes se pueden extraer y volver a juntar:
s12 <- get_map(maptype = "satellite", zoom = 12)
ggmap(s12, base_layer=ggplot(aes(x=lon,y=lat), data=zips),
extent = "normal", maprange=FALSE) +
geom_polygon(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = NA, fill = "red", alpha = .5) +
geom_path(aes(x = lon, y = lat, group = plotOrder),
data = zips, colour = "white", alpha = .7, size = .4) +
coord_map(projection="mercator",
xlim=c(attr(s12, "bb")$ll.lon, attr(s12, "bb")$ur.lon),
ylim=c(attr(s12, "bb")$ll.lat, attr(s12, "bb")$ur.lat)) +
theme_nothing()