bananaonthemoon / wybory

kodzik na inżynierke
0 stars 0 forks source link

viz: cartogram #5

Open bananaonthemoon opened 4 years ago

bananaonthemoon commented 4 years ago

@Nowosad, może przy Continuous Area Cartogram warto użyć animacji (jak się kształt zmienia)? cartog

Nowosad commented 4 years ago

Jak najbardziej, ale myślę, że to będzie oddzielny rozdział w pracy. Można wtedy pomyśleć o podziale:

  1. wizualizacje statyczne
  2. wizualizacje dynamiczne (animacje)
  3. wizualizacje interaktywne
Nowosad commented 4 years ago

Jeszcze jedna myśl. Teraz pokazujemy relację procent głosów vs powierzchnia (bo cartogram zniekształca wg powierzchni). Może warto oprócz frekwencji zobaczyć też mapy udziału liczby głosów na danych kandydatów.

bananaonthemoon commented 4 years ago

W sumie to co jest na wcześniejszym zdjęciu to jest udział, tylko nie wiem czemu było to f1.duda a nie t1.duda (tura pierwsza). Ale już poprawiłam, będę robiła zarówno frekwencję jak i udział.

bananaonthemoon commented 4 years ago

czy w _cartogramcont() iteracja ma prawo wzrastać? bo przy f1 rośnie, a następnie maleje...

Mean size error for iteration 1: 2.99752454682636 Mean size error for iteration 2: 2.08323348102312 Mean size error for iteration 3: 2.14938085394077 Mean size error for iteration 4: 2.19184837826684 Mean size error for iteration 5: 4.82316545821428 Mean size error for iteration 6: 8.15867043217105 Mean size error for iteration 7: 3.92566550920961 Mean size error for iteration 8: 2.52950710072667 Mean size error for iteration 9: 2.03095764617475 Mean size error for iteration 10: 1.83141507658028 Mean size error for iteration 11: 1.74206905342728 Mean size error for iteration 12: 1.71326574665436 i tak dalej...

bananaonthemoon commented 4 years ago

Jezu, znowu rośnie...

bananaonthemoon commented 4 years ago
library(cartogram)
library(tmap)
library(tmaptools)
library(tidyverse)
library(sf)
#> Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3

prez = "https://raw.github.com/bananaonthemoon/wybory/master/dane/prez_powiaty_demo.gpkg"

prez_woj = read_sf(prez, stringsAsFactors=FALSE) %>%
  st_transform(crs = 2180)

download.file("https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_map_subunits.zip", "ne_10m_admin_0_map_subunits.zip")
unzip("ne_10m_admin_0_map_subunits.zip")

sasiad = c("Germany", "Czechia", "Slovakia", "Ukraine", "Belarus", "Lithuania", "Kalinigrad", "Austria")

bord = read_sf("ne_10m_admin_0_map_subunits.shp") %>%
  filter(SUBUNIT %in% sasiad) %>%
  select(NAME, POSTAL) %>%
  st_transform(crs = 2180)

granica = read_sf("ne_10m_admin_0_map_subunits.shp") %>%
  filter(SUBUNIT == "Poland") %>%
  select(NAME, POSTAL) %>%
  st_transform(crs = 2180)

# f1 ----------------------------------------------------------------

# Continuous Area Cartogram
prez_woj_cont_f1 = cartogram_cont(prez_woj, "f1", 15)
#> Mean size error for iteration 1: 2.99752454682636
#> Mean size error for iteration 2: 2.08323348102312
#> Mean size error for iteration 3: 2.14938085394077
#> Mean size error for iteration 4: 2.19184837826684
#> Mean size error for iteration 5: 4.82316545821428
#> Mean size error for iteration 6: 8.15867043217105
#> Mean size error for iteration 7: 3.92566550920961
#> Mean size error for iteration 8: 2.52950710072667
#> Mean size error for iteration 9: 2.03095764617475
#> Mean size error for iteration 10: 1.83141507658028
#> Mean size error for iteration 11: 1.74206905342728
#> Mean size error for iteration 12: 1.71326574665436
#> Mean size error for iteration 13: 1.73415899164093
#> Mean size error for iteration 14: 1.80846832898182
#> Mean size error for iteration 15: 1.95178783574562

# Non-contiguous Area Cartogram
prez_woj_ncont_f1 = cartogram_ncont(prez_woj, "f1")

# Non-overlapping Circles Cartogram
prez_woj_dorling_f1 = cartogram_dorling(prez_woj, "f1")

Created on 2020-04-27 by the reprex package (v0.3.0)

Nowosad commented 4 years ago

Może też Pani popróbować sterować argumentem threshold (domyślnie jest chyba 0.05). Plus, a co się dzieje przy 100 lub 200 iteracjach?

bananaonthemoon commented 4 years ago

chyba zostanę przy thresholdzie 0.1 iteracje.txt

bananaonthemoon commented 3 years ago

@Nowosad, st_cast() niestety nie pomaga w pozbyciu się dziur w powiatach.

library(cartogram)
library(tmap)
library(maptools)
library(dplyr)
library(sf)
library(tmaptools)

prez_p = "https://raw.github.com/bananaonthemoon/wybory/master/dane/powiaty.gpkg"
prez_pow = read_sf(prez_p, stringsAsFactors=FALSE) %>%
  st_transform(crs = 2180) %>%
  st_cast()

prez_pow_cont_frek = cartogram_cont(prez_pow, "t1_Frekwencja", 15, threshold = 0.1)

cont_pow_frek = tm_shape(prez_pow_cont_frek) + 
  tm_polygons(col = "#BDE5B7", lwd = 1) +
  tm_layout(frame = FALSE)

print(cont_pow_frek)
Nowosad commented 3 years ago

try st_cast("POLYGON")

bananaonthemoon commented 3 years ago

jest jeszcze większa dziura. wydaje mi się, że przy mniejszych różnicach wartości nie robią się te dziury, a jest jeszcze kilka powiatów z enklawami. pow_cont_frek_nocol1