with studio mapview ggplot beautiful r ggplot2 gis

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)