Olá pessoal. Estou com uma dificuldade em um gráfico do GGplot. A legenda é composta pelo geom_line e por um geom_point usando “shape”. Eu crio a legende manualmente com a função scale_manual. Porém, na legenda, o “shape” fica sempre atrás da linha dificultando a visualização, sendo que no gráfico isso é fácil de resolver, já que as camadas vão sendo postas de acordo com a ordem do código no GGplot. Mas no scale_manual não parece ser deste jeito. Alguém pode me ajudar com a ordem que a imagem aparece na legenda?
Usei um banco do AER para que o exemplo ficasse reprodutível.
library(tidyverse)
library(AER)
graph_desp_ab <- as_tibble(GSOEP9402) %>%
select("ano" = year, "q_ibp" = memployment, "porte_pop" = school,
"desp_pop_cob_median" = meducation) %>%
mutate(ano = as.double(ano),
q_ibp = as.factor(q_ibp),
porte_pop = as.factor(porte_pop)) %>%
group_by(ano, q_ibp, porte_pop) %>%
summarise(desp_pop_cob_median = mean(desp_pop_cob_median)) %>%
ggplot() +
geom_line(aes(x= ano, y = desp_pop_cob_median, color = q_ibp), size = 1.3) +
# geom_point(aes(x = ano, y = desp_pop_cob_median, shape = q_ibp, color = q_ibp), size = 1.8) +
geom_point(aes(x= ano, y = desp_pop_cob_median, shape = q_ibp), color = "black", fill = "white", size = 1.8) +
geom_smooth(aes(x = ano, y = desp_pop_cob_median, color = "Curva de tendência mediana"),size = 1.6) +
labs(
#title = "Despesa mediana municipal em APS¹ por porte populacional e privação socioeconômica do município.",
# shape = "Índice Brasileiro de Privação",
color = "Índice Brasileiro de Privação",
x = "Ano",
y = "Despesa em APS por habitante coberto (R$)",
caption = "Fonte: SIOPS/MS") +
theme_bw()+
scale_x_continuous(breaks = seq(1994,2002,1)) +
scale_color_manual(name = "Índice Brasileiro de Privação",
values = c("fulltime" = "#4D4D4D",
"parttime" = "#737373",
"none" = "#A4A4A4",
"Curva de tendência mediana" = "black")) +
scale_shape_manual(name = "Índice Brasileiro de Privação",
values = c("fulltime" = 21,
"parttime" = 22,
"none" = 23,
"Curva de tendência mediana" = NA)) +
theme(panel.background = element_rect(fill = 'white'),
axis.text.x = element_text(size = 8,
angle = 90,
hjust = 0.5,
vjust = 0.5),
axis.text.y = element_text(size = 8),
plot.title = element_text(size = 9,
face = "bold",
hjust = 0),
plot.caption = element_text(size = 8),
axis.title = element_text(size = 9),
legend.title = element_text(size = 8, face = "bold"),
legend.text = element_text(size = 8),
legend.position = c(0.5, 0.12)) +
facet_wrap(vars(porte_pop))