Colores y escalas

34 views
Skip to first unread message

Manuel Pérez Aguirre

unread,
May 5, 2024, 5:33:23 PM5/5/24
to mxmaps
Hola otra vez. 
Perdón, ya me había salido lo de los colores, pero necesito un mapa sólo del estado en cuestión y ahora me sale error, otra vez
Éste es mi código

library(mxmaps)
library(viridis)
library(scales)
library(ggplot2)

mxmunicipio_choropleth(sina_map2020, num_colors = 9,  
                       zoom = subset(sina_map2020, state_name %in%
                                       c("Sinaloa"))$region,
                       title = "Número de personas desaparecidas y no localizadas",
                       show_states = FALSE,
                       legend = "Total")

a) cómo puedo hacer para cambiar de color

por otro lado, como estoy comparando violencia en dicho estado en diversos momentos, me serviría mantener constantes las escalas, en lugar de usar porcentajes

b) cómo puedo hacer para mantener los grupos constantes??
(por ejemplo grupo 1 de 0 a 3 desap, grupo 2 de 3 a 6 y así...

Saludos y muchísimas gracias de antemano

Manuel

Diego Valle-Jones

unread,
May 5, 2024, 10:08:46 PM5/5/24
to mxmaps
Hola, 

Creo el error ocurre porque estás usando una escala continua para datos discretos, para resolverlo puedes usar el siguiente código

library(mxmaps)
library(viridis)
library(scales)
library(ggplot2)

df_mxmunicipio_2020$value <-  df_mxmunicipio_2020$indigenous_language
mxmunicipio_choropleth(df_mxmunicipio_2020, num_colors = 9,  
                       zoom = subset(df_mxmunicipio_2020, state_name %in%
                                       c("Sinaloa"))$region,
                       title = "",
                       show_states = FALSE,
                       legend = "Total") +
  scale_fill_brewer(palette = "Greens")


Para mantener una escala constante puedes usar la función 'cut'

sinaloa <-  subset(df_mxmunicipio_2020, state_name %in%
                 c("Sinaloa"))
sinaloa$value <- cut(sinaloa$pop, breaks = c(0, 100000, 400000, 6000000))
mxmunicipio_choropleth(sinaloa, num_colors = 9,  
                       zoom = sinaloa$region,
                       title = "Número de personas",
                       show_states = FALSE,
                       legend = "Total") +
  scale_fill_brewer(palette = "Greens")


Manuel Pérez Aguirre

unread,
May 12, 2024, 4:06:39 AM5/12/24
to mxmaps
Hola Diego
Me da mucha pena ser tan repetitivo, pero como que todavía no termino de solucionar el problema
Pasa que la intensidad de los colores varía de mapa a mapa, por lo que no pueden compararse intuitivamente

Rplot.png
Adapté el código que me pasaste y lo uso para cada mapa, pero no sé si estoy haciendo algo mal

sinaloa2023$value <- cut(sinaloa2023$ homicidio.100k,  breaks = c(-1,35.4,70.8,106.2,141.6,177))

??mxmunicipio_choropleth
th.2023 <- mxmunicipio_choropleth(sinaloa2023, num_colors = 6,
                       zoom = subset(sinaloa2023, state_name %in%
                                       c("Sinaloa"))$region,
                       title = "2023",

                       show_states = FALSE,
                       legend = "Total") +
  scale_fill_brewer(palette = "Reds")


plot_grid(th.2002, th.2005, th.2008, th.2011, labels = " ", cols = 2, rows = 2)

Muchas gracias de antemano

Saludos
Manuel

Diego Valle-Jones

unread,
May 12, 2024, 10:22:29 PM5/12/24
to mxmaps
Hola, si te entendí bien lo que necesitas hacer es usar scale_fill_manual con el argumento limits

library(mxmaps)
library(viridis)
library(scales)
library(ggplot2)
library(RColorBrewer)


sinaloa <-  subset(df_mxmunicipio_2020, state_name %in%
                     c("Sinaloa"))
sinaloa$value <- cut(sinaloa$pop, breaks = c(0, 30e3, 1e5, 5e5, 6e6, 10e7))

mxmunicipio_choropleth(sinaloa, num_colors = 9,  
                       zoom = sinaloa$region,
                       title = "Número de personas",
                       show_states = FALSE,
                       legend = "Total") +
  scale_fill_manual(values = brewer.pal(5, "Reds"),
                    limits = levels(sinaloa$value),
                    labels = levels(sinaloa$value))


Reply all
Reply to author
Forward
0 new messages