Skip to content

Instantly share code, notes, and snippets.

@pbiecek
Last active June 8, 2025 19:48
Show Gist options
  • Select an option

  • Save pbiecek/addca526069da50eda5eb2bafbf8cb53 to your computer and use it in GitHub Desktop.

Select an option

Save pbiecek/addca526069da50eda5eb2bafbf8cb53 to your computer and use it in GitHub Desktop.
wybory2025.R
library("readr")
library("dplyr")
library("ggplot")
library("plotly")
## Rozpakuj pliki z
# "https://wybory.gov.pl/prezydent2025/data/csv/protokoly_po_obwodach_csv.1748955031.zip"
# "https://wybory.gov.pl/prezydent2025/data/csv/protokoly_po_obwodach_w_drugiej_turze_csv.1748955031.zip"
# więcej: https://wybory.gov.pl/prezydent2025/pl/dane_w_arkuszach
tura_1_csv <- "protokoly_po_obwodach_utf8.csv"
tura_1 <- read.table(tura_1_csv, header = TRUE, sep=";")
tura_2_csv <- "protokoly_po_obwodach_w_drugiej_turze_utf8.csv"
tura_2 <- read.table(tura_2_csv, header = TRUE, sep=";")
# Proporcja Trzaskowski do Nawrocki w turze 1
tura_1$T2N_n1 <- tura_1$TRZASKOWSKI.Rafał.Kazimierz + tura_1$NAWROCKI.Karol.Tadeusz
tura_1$T2N_p1 <- tura_1$TRZASKOWSKI.Rafał.Kazimierz / tura_1$T2N_n1
# Proporcja Trzaskowski do Nawrocki w turze 2
tura_2$T2N_n2 <- tura_2$TRZASKOWSKI.Rafał.Kazimierz + tura_2$NAWROCKI.Karol.Tadeusz
tura_2$T2N_p2 <- tura_2$TRZASKOWSKI.Rafał.Kazimierz / tura_2$T2N_n2
# Połącz dane z obu tur
tura_12 <- left_join(tura_1, tura_2, by = c("Nr.komisji", "Teryt.Gminy", "Teryt.Powiatu"))
# Tylko komisje ponad 250 osób
tura_12_duze <- tura_12[tura_12$T2N_n2 > 250, c("T2N_p1", "T2N_p2", "Siedziba.x")]
p <- ggplot(tura_12_duze, aes(T2N_p1, T2N_p2, text = Siedziba.x)) +
geom_point(size = 1) +
geom_point(data = tura_12[12864, ], color="red", size=3) +
scale_x_continuous("Trzaskowski do Nawrocki - pierwsza tura", labels = scales::percent_format(), lim=c(0,1), expand = c(0,0)) +
scale_y_continuous("Trzaskowski do Nawrocki - druga tura", labels = scales::percent_format(), lim=c(0,1), expand = c(0,0)) +
theme_bw() + ggtitle("Procent głosów oddanych na Trzaskowskiego vs Nawrockiego",
"uwzględniono wyłącznie głosy oddane na tych dwóch kandydatów, pokazano komisje z ponad 250 głosami")
p
# interaktywne etykiety
ggplotly(p, tooltip = "text")
@Polkas
Copy link

Polkas commented Jun 7, 2025

The code is not yet reproducible. Please add library(dplyr) as you are using left_join.
You can read data directly with fread in data.table, then please add library(data.table).
tura_1 <- data.table::fread("https://wybory.gov.pl/prezydent2025/data/csv/protokoly_po_obwodach_csv.1748955031.zip", check.names = TRUE)
tura_2 <- data.table::fread("https://wybory.gov.pl/prezydent2025/data/csv/protokoly_po_obwodach_w_drugiej_turze_csv.1748955031.zip", check.names = TRUE)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment