Usa un centro diferente al del primer meridiano para trazar un mapa del mundo

Estoy superponiendo un mapa del mundo desde elmaps paquete en unggplot2 geometría de la trama Sin embargo, esta trama no está centrada en el primer meridiano (0 grados), sino en 180 grados (aproximadamente el Mar de Bering y el Pacífico). El siguiente código obtiene el mapa y lo actualiza en 180 grados:

require(maps)
world_map = data.frame(map(plot=FALSE)[c("x","y")])
names(world_map) = c("lon","lat")
world_map = within(world_map, {
  lon = ifelse(lon < 0, lon + 360, lon)
})
ggplot(aes(x = lon, y = lat), data = world_map) + geom_path()

que produce el siguiente resultado:

Obviamente, hay líneas dibujadas entre polígonos que están en un extremo o en el otro del primer meridiano. Mi solución actual es reemplazar los puntos cercanos al meridiano principal por NA, reemplazando elwithin Llame arriba por

world_map = within(world_map, {
  lon = ifelse(lon < 0, lon + 360, lon)
  lon = ifelse((lon < 1) | (lon > 359), NA, lon)
})
ggplot(aes(x = lon, y = lat), data = world_map) + geom_path()

Lo que lleva a la imagen correcta. Ahora tengo una serie de preguntas:

Debe haber una mejor manera de centrar el mapa en otro meridiano. Intenté usar elorientation parámetro enmap, pero configurando esto paraorientation = c(0,180,0) no dio el resultado correcto, de hecho, no cambió nada al objeto de resultado (all.equal cedióTRUE).Deshacerse de las franjas horizontales debería ser posible sin eliminar algunos de los polígonos. Podría ser que resolver el punto 1. también resuelva este punto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta