studio - Faceta con escamas libres pero manteniendo la relación de aspecto fija.
plot shapefile in r (3)
ACTUALIZAR:
Creo que lo que está buscando es la capacidad de recortar o hacer zoom en una sola faceta. En otras palabras, ajustar los ylim
s y xlim
s de forma independiente para cada faceta. Parece que tal característica se ha solicitado pero aún no se ha implementado ( github.com/hadley/ggplot2/issues/187 )
Si la opción de space=free
continuación no funciona, una alternativa es eliminar facetas y usar diseños de cuadrícula y / o ventanas gráficas para imprimir cada gráfico manualmente.
Usar facet_grid
lugar de facet_wrap
y agregar space=free
:
gg_state + facet_grid(~region, scales = "free_x", space="free")
Respuesta original:
quizás en lugar de tener ambos ejes a escala libremente, solo tenga una escala:
map_state <- subset(fortify(map_data(''state'')),
region %in% c("california", "nevada"))
gg_state <- qplot(long, lat, data=map_state, geom="polygon", group=group)
gg_state + facet_wrap(~region, scales="free_x")
Estoy utilizando ggplot para dibujar mapas facetados y no he podido averiguar cómo permitir escalas "libres" en cada faceta (para que las regiones pequeñas no parezcan demasiado pequeñas) mientras mantengo la relación de aspecto xy fija.
Aquí hay un ejemplo simplificado:
require(maps)
require(ggplot2)
map_nz <- subset(fortify(map_data(''nz'')),
region %in% c("South.Island ", "North.Island "))
gg_nz <- qplot(long, lat, data=map_nz, geom="polygon", group=group)
Ahora tengo una parcela de las islas del norte y sur de Nueva Zelanda. Puedo facetar esto y mostrarlo con una relación de aspecto fija como esta:
gg_nz + coord_fixed() + facet_wrap(~region)
con un resultado que se ve así:
Observe que hay bastante espacio desperdiciado en la faceta de la Isla Norte. Me gustaría que ocupara más espacio disponible. Puedo liberar las escalas así:
gg_nz + facet_wrap(~region, scales="free")
con el siguiente resultado:
El problema es que la relación de aspecto xy ya no es 1: 1 en cada faceta. Estoy feliz de tener cada faceta en una escala diferente, pero dentro de la faceta me gustaría preservar la relación de aspecto.
Intenté lo siguiente sin éxito:
gg_nz + facet_wrap(~region, scales="free") + coord_fixed()
Presumiblemente, el parámetro de scale
en facet_wrap
invalida coord_fixed
. ¿Alguna sugerencia?
ACTUALIZACIÓN: para dar una ilustración más dramática, aquí está el mismo fenómeno con algunos estados de los Estados Unidos:
coord_fixed
fijos (utilizando coord_fixed
o coord_equal
):
Coords libres (usando scales = free
):
Ninguno de estos mapas es ideal: en el primero, Delaware es pequeño. En el segundo, las relaciones de aspecto están bastante distorsionadas. Nueva Jersey, que es un estado estrecho, se estira demasiado, por ejemplo.
¿Ayuda coord_equal
?
gg_nz + facet_wrap(~region, scales="free") + coord_equal()
Editar
Podría usar grid.arrange
para colocar manualmente los gráficos en una página, fijando el ancho y la altura. Esto parece hacer el truco, pero no puedo hacer que funcione con la funcionalidad facet()
. Gracias a este post de @mnel.
nz_sth <- qplot(long, lat, data=map_nz[map_nz$region == "South.Island ",], geom="polygon", group=group) + coord_fixed()
nz_nth <- qplot(long, lat, data= map_nz[ map_nz$region == "North.Island " , ] , geom="polygon", group=group) + coord_fixed()
grid.arrange( heights=unit(0.75, "npc") , widths=unit(0.5, "npc") , nz_sth,nz_nth, ncol=2)
theme(aspect.ratio = 1)
funciona.
gg_nz + facet_wrap(~region, scales="free") + theme(aspect.ratio = 1)