Estou fazendo alguns mapas dos EUA e alguns deles contêm tanto a Terra quanto o espaço sideral devido à projeção, como mostrado abaixo:
Ele é gerado pelo código abaixo:
library(ggplot2)
library(sf)
# Import Data:
df <- read_sf("https://raw.githubusercontent.com/rfortherestofus/book/refs/heads/main/data/states.geojson")
# Create the map:
ggplot() +
geom_sf(data = df, fill = "grey90") +
coord_sf(crs = "+proj=ortho +lat_0=22.0 +lon_0=-162.5") +
theme_minimal() +
theme(
panel.background = element_rect(fill = "lightblue") # <- Set the colour for ocean
)
Gostaria de saber se é possível colorir o espaço sideral (destacado) de preto para refletir a realidade e também tornar a Terra, e portanto os EUA, mais visíveis no mapa?
Uma opção seria criar um novo objeto sf que é uma grade cobrindo o planeta inteiro. Você precisaria transformar isso para sua projeção escolhida e eliminar os painéis ilegais. Depois disso, você pode simplesmente plotá-lo como um
sf
objeto normal:Observe que isso cobre as linhas de latitude/longitude, mas você pode adicioná-las explicitamente de volta (sem os artefatos irritantes) especificando uma multilinestring:
o que resulta em
Se você não quiser especificar manualmente os limites das coordenadas, você pode obtê-los do seu objeto sf da seguinte maneira:
Se você quiser uma aparência mais 3D, a grade permite que você tenha um preenchimento de gradiente fácil, e suponho que você poderia adicionar um campo de estrela gratuito:
Você pode falsificar a esfera da Terra, o que é um pouco mais rápido ;) e então combiná-la com seu
geom_sf(data = df, fill = "grey90")
. Fazer isso, no entanto, não aumentará o zoom automaticamente na América. Então, certifique-se de ajustarxlim = c(-500000, 5600000), ylim = c(-700000, 5000000)
para focar na seção correta do planeta.