Skip to content

Conversation

@adonix95
Copy link

@adonix95 adonix95 commented Dec 9, 2025

Pull request 1 - Morant Viz: Metodología Morena; Conocimiento Morena; Mapas municipales.

Para la elaboración de las siguientes funciones se ha servido de bases de datos externas, dado que el diseño de Alvaro Obregón (diseno_demo) no contaba con información suficiente para graficar estos métodos. Estas son la base de datos de Chihuahua y la ENVIPE-INEGI.

  1. En el script "graficar" se han colocado las funciones para realizar un calculo de la metodología de MORENA, la cual consiste en medir varios indicadores, multiplicarlos por el conocimiento que se tiene del candidato medido y, posteriormente obtener un porcentaje para cada uno, mismo que determina quien recibe los puntos que se otorgan por cada careo. Hasta la derecha se hace el cálculo de esta puntuación para determinar al ganador.
  2. Se tiene un gráfico de "techo de conocimiento" este incorpora los resultados para algunas variables medidas anteriormente pero las grafica según el conocimiento que se tiene del personajes (quedando siempre debajo de este). Con esto, se pretende mostrar a las y los candidatos cuál es su frontera de aprobación, mediada por el conocimiento que se tiene de la persona candidata.
  3. Fue elaborada una funcion que permite generar mapas a nivel municipal de forma sencilla, integrando los shares (cartográfia) de las entidades, los colores y las variables a medir. Se pretende que la función sea mejorada hasta que grafique también distritos electorales.

@rafa0823
Copy link
Contributor

El width = 45 en el str_wrap de scale_y_contiuous debe ser un parámetro y no estar fijo
graficar_waffle = function(
nombre_x = NULL,
escala_color = c(low = "#9d7ad240", high = "#9d7ad2"),
eje_x = "grupo",
eje_y = "base_y",
caption = NULL
) {
stopifnot(!is.null(self$tbl))

  df <- self$tbl

  # --- Gráfico principal ---
  self$grafica <- ggplot2::ggplot(
    df,
    ggplot2::aes(x = x, y = y, group = .id)
  ) +
    ggplot2::geom_polygon(ggplot2::aes(fill = fill_id), color = "white") +
    ggplot2::geom_text(
      ggplot2::aes(
        x = col,
        y = row_pos,
        label = scales::percent(fill_id, accuracy = 1)
      ),
      size = 10,
      color = "black",
      family = self$tema$text$family,
      vjust = 0.5,
      hjust = 0.5
    ) +
    ggplot2::scale_fill_gradient(
      low = escala_color["low"],
      high = escala_color["high"],
    ) +
    ggplot2::scale_x_continuous(
      breaks = seq_along(levels(df[[eje_x]])),
      labels = levels(df[[eje_x]]),
      position = "top"
    ) +
    ggplot2::scale_y_continuous(
      breaks = seq_along(levels(df[[eje_y]])),
      labels = str_wrap(levels(df[[eje_y]]), 45)
    )

@rafa0823
Copy link
Contributor

Mapear_municipios deberían ser, al menos, dos métodos. Uno para generar el shp, que yo creo que ese debería entrar como parámetros de la clase y no cargarse dentro del mismo método. La función se vuelve muy inflexible si la mantenemos como está. El filtro es un método que ya existe, el conteo es otro método que ya existe. Yo haría lo siguiente: 1) el shp ya limpio entra como insumo a la clase, 2) creo un método para pegar los datos al shp, finalmente el método para graficar el mapa. Esta parte de acá parece estar bien, pero no la puedo testear hasta que se corrija lo anterior. Usa un ejemplo de encuesta:
p <- ggplot2::ggplot(mapa, ggplot2::aes(fill = n)) +
ggplot2::geom_sf(color = "white", size = 0.1) +
ggplot2::theme_void() +
ggplot2::theme(
legend.position = "bottom",
legend.title.position = "top",
legend.title = element_text(hjust = 0.5), # Centrar título
legend.text = element_text(hjust = 0.5), # Centrar texto
legend.justification = "center", # Centrar caja de leyenda
legend.box.just = "center", # Centrar caja cuando hay varias líneas
legend.box = "horizontal" # Mantener barra horizontal
)

if (tipo == "continuo") {

Escala continua (gradiente)

p <- p +
ggplot2::scale_fill_gradient(
low = low,
high = high,
na.value = "gray80",
name = titulo_leyenda,
guide = ggplot2::guide_colourbar(
title.position = "top",
title.hjust = 0.5
)
)

} else if (tipo == "discreto") {

Crear categorías (quintiles por default)

mapa$n_cat <- cut(
mapa$n,
breaks = quantile(mapa$n, probs = seq(0, 1, by = 0.2), na.rm = TRUE),
include.lowest = TRUE
)

p <- ggplot2::ggplot(mapa, ggplot2::aes(fill = n_cat)) +
ggplot2::geom_sf(color = "white", size = 0.1) +
ggplot2::scale_fill_brewer(
palette = "Reds",
name = titulo_leyenda
)
}

8. Guardar resultado

self$mapa <- p
invisible(self)

@rafa0823 rafa0823 self-assigned this Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants