Añadir "value" sobre Estado ("region") correspondiente

45 views
Skip to first unread message

Rommel Carballo

unread,
Jun 9, 2023, 4:02:49 PM6/9/23
to mxmaps
Saludos

Solicito de la manera más paciente su apoyo con la siguiente actividad.

Estoy tratando de hacer un mapa con estadística de distribución de personas por estado (un grupo de sujetos con distintos estados de origen). Pero, en vez de que salga un color por cada frecuencia, quisiera que esa misma frecuencia apareciera sobre el estado.

Un ejemplo es: si tengo 20 sujetos de Sonora y 3 de Sinaloa, que en el mapa de México haya un 20 sobre Sonora y en Sinaloa un 3.

Pienso que esto sería de interés no solo propio sino de otros individuos.

Espero con paciencia su respuesta y le agradezco de antemano.

diego...@gmail.com

unread,
Jun 9, 2023, 4:46:17 PM6/9/23
to mxmaps
Hola, eso lo puedes hacer con el siguiente código:

library("geojsonio")
library("ggplot2")
library("rgdal")
library("rgeos")
library("maptools")
library("ggrepel")
library("sf")
library("mxmaps")

df_mxstate_2020$value <-  df_mxstate_2020$indigenous_language /
  df_mxstate_2020$pop * 100
p <- mxstate_choropleth(df_mxstate_2020,
                        num_colors = 1,
                        title = "Percentage of the population that speaks\nan indigenous language",
                        legend = "%")

data("mxstate.topoJSON")
data("df_mxstate_2020")

tmpdir <- tempdir()
# have to use RJSONIO or else the topojson isn't valid
write(RJSONIO::toJSON(mxstate.topoJSON), file.path(tmpdir, "state.topojson"))
states <- topojson_read(file.path(tmpdir, "state.topojson"))
# convert to SpatialPolygonsDataFrame
states <- as_Spatial(states)

# make sure the coordinates of the labels are in the correct order
df_mxstate_2020 <- cbind(df_mxstate_2020,
                         data.frame(lon = coordinates(states[match(df_mxstate_2020$region, states$id),])[,1],
                                    lat = coordinates(states[match(df_mxstate_2020$region, states$id),])[,2]))
df_mxstate_2020$group <- df_mxstate_2020$state_abbr

df_mxstate_2020$label <- sample(1:7, 32, replace = TRUE)
p + geom_text_repel(data = df_mxstate_2020, aes(lon, lat, label = label), size = 3,
                  box.padding = unit(0.1, 'lines'), force = 0.1)

La parte importante del código son las dos últimas líneas donde asigno el valor de la columna label

Reply all
Reply to author
Forward
0 new messages