Estou produzindo um mapa do Estado de São Paulo onde os pontos são escolas. Consegui colorir os pontos segundo uma variável “rede” (os valores são “pública ou conveniada” e “privada”), e colocar o tamanho dos pontos segundo a variável numérica “matriculas_2020”.
Código:
mapa <- df %>%
ggplot() +
geom_sf(data = sp, fill = "#CCCCCC", color = "#FFFFFF") +
geom_sf(aes(geometry=geom,
color = rede,
size = matriculas_2020)) +
scale_color_manual(
values=c("#3D748F", "#a80000"),
labels = c("Pública ou conveniada", "Privada não conveniada")
)
O resultado é esse aqui:
Mas, pra melhorar a visualização, eu queria que os pontos tivessem alguma borda.
Mas, quando tento definir o ponto com o “shape = 21” pra incluir as opções “fill” e “stroke”, eu recebo o erro: “A continuous variable can not be mapped to shape”.
Queria saber se existe alguma alternativa pra fazer algo parecido com o color/fill/stroke do geom_point, mas num geom_sf. Achei esse capítulo do livro da Curso-R: 13.8 O pacote ggplot2 | Ciência de Dados em R indicando que talvez não tenha como mesmo.
Mas se puderem me ajudar a achar uma solução, por favor, agradeço muito!
Eu não sei a causa exata do erro que você recebeu, mas meu palpite é que você estava tentando colocar o shape = 21 dentro da aes(). Isso dá erro porque essa função especifica os mapeamentos do gráfico, ou seja, quais variáveis viram o quê (rede vira a cor, matriculas_2020 vira tamanho, etc.); sendo assim, ele ia falhar na tentativa de transformar “21” em uma variável.