Estou traçando um mapa da Europa com ggplot2
e gostaria de mostrar meridianos e paralelos. Posso fazer isso usando panel.grid.major
e panel.grid.minor
.
Entretanto, com meu código atual, a grade criada com ggplot fica em segundo plano em comparação à superfície plotada (os países), de modo que quando os dois se sobrepõem, a grade não pode ser vista:
library(rnaturalearth)
library(ggplot2)
library(sf)
ggplot(ne_countries(scale = "medium", continent = NULL, returnclass = "sf")) +
geom_sf() +
coord_sf(xlim=c(2600000, 7300000), ylim=c(5450000, 1000000),
crs = st_crs(3035)) +
theme(panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "red"),
panel.grid.minor = element_line(colour = "red"))
Isso não é o ideal, pois eu gostaria de sempre ver meridianos e paralelos, mesmo quando se sobrepõem às geometrias dos países.
Existe uma maneira de deixar a grade em primeiro plano e a superfície plotada em segundo plano ggplot2
?
Você pode usar
theme(panel.ontop = TRUE)
, mas precisa deixar o fundo do seu painel transparente para que isso funcione. Isso não é um problema se o fundo do seu painel for da mesma cor que o fundo do seu gráfico, como é o caso aqui.Para o caso mais geral (digamos que você queria que os oceanos fossem azuis, ou queria oceanos brancos, mas um fundo de plotagem cinza), suas opções são desenhar um polígono grande representando o oceano abaixo do seu mapa para atuar como o fundo do painel, ou desenhar uma grade sobre o mapa como um objeto sf. O primeiro é mais fácil.