▶️ Tematyka

  • Załadowanie pakietów i pobranie zmiennych z Banku Danych Lokalnych
  • Konstrukcja wykresów dla pobranych zmiennych
    • kołowy
    • liniowy
    • rozrzutu
    • mapowy
  • Animacje dla danych z BDL
      • rozrzutu
      • liniowy
      • pudełkowy
      • histogram
      • facet_wrap
  • Animacje - Urodzenia i zgony na 1000 mieszkańców
      • rozrzutu (z efektami)
      • liniowy
      • pudełkowy
      • słupkowy
      • facet_wrap
  • Animacje - Mieszkania oraz ceny wybranych dóbr
      • rozrzutu (z efektami)
      • liniowy (z efektami)


📘 Załadowanie pakietów i pobranie zmiennych z Banku Danych Lokalnych

❕ Załadowanie pakietów

library(ggplot2)
library(gganimate)
library(plotly)
library(gifski)
library(dplyr)
library(bdl)

️✔️ Dane są pobierane z Banku Danych Lolalnych

🔗 Sklepy i stacje paliw - dane w BDL

Wyświetlenie informacji o zmiennych z BDL

search_variables("sklepy")
## # A tibble: 3 × 7
##      id subjectId n1              n2     level measureUnitId measureUnitName
##   <int> <chr>     <chr>           <chr>  <int>         <int> <chr>          
## 1   510 P1626     ogółem          sklepy     6            35 ob.            
## 2   511 P1626     sektor prywatny sklepy     6            35 ob.            
## 3 58964 P2323     sklepy          <NA>       3            35 ob.
get_variables("P2323")
## # A tibble: 2 × 6
##      id subjectId n1           level measureUnitId measureUnitName
##   <int> <chr>     <chr>        <int>         <int> <chr>          
## 1 58964 P2323     sklepy           3            35 ob.            
## 2 58965 P2323     stacje paliw     3            35 ob.

Pobranie danych z Banku Danych lokalnych - stacje paliw

get_data_by_variable("58965",year="2021",unitLevel=2)
## # A tibble: 16 × 8
##    id    name  year    val measureUnitId measureName attrId attributeDescription
##    <chr> <chr> <chr> <int> <chr>         <chr>        <int> <chr>               
##  1 0112… MAŁO… 2021    549 35            ob.              1 ""                  
##  2 0124… ŚLĄS… 2021    810 35            ob.              1 ""                  
##  3 0208… LUBU… 2021    283 35            ob.              1 ""                  
##  4 0230… WIEL… 2021    878 35            ob.              1 ""                  
##  5 0232… ZACH… 2021    429 35            ob.              1 ""                  
##  6 0302… DOLN… 2021    490 35            ob.              1 ""                  
##  7 0316… OPOL… 2021    185 35            ob.              1 ""                  
##  8 0404… KUJA… 2021    514 35            ob.              1 ""                  
##  9 0422… POMO… 2021    435 35            ob.              1 ""                  
## 10 0428… WARM… 2021    254 35            ob.              1 ""                  
## 11 0510… ŁÓDZ… 2021    695 35            ob.              1 ""                  
## 12 0526… ŚWIĘ… 2021    265 35            ob.              1 ""                  
## 13 0606… LUBE… 2021    485 35            ob.              1 ""                  
## 14 0618… PODK… 2021    448 35            ob.              1 ""                  
## 15 0620… PODL… 2021    239 35            ob.              1 ""                  
## 16 0714… MAZO… 2021   1169 35            ob.              1 ""

✔️ Konstrukcja wykresów dla pobranych zmiennych

Wykres kołowy - liczba stacji paliw

pie_plot(data_type ="variable" ,"58965", "2021", unitLevel = "1")

Wykres rozrzutu - liczba sklepów i stacji paliw

scatter_2var_plot(data_type = "variable" ,c("58964", "58965"), unitLevel = "2",year=2021)+labs(x='sklepy',y='stacje paliw')

Wykres liniowy - liczba sklepów

line_plot(data_type = "variable", unitParentId = "010000000000", varId = "58964",unitLevel=2)

Kartogram - liczba stacji paliw

generate_map(varId = "58965", year = "2021")

📘 Animacje dla danych z BDL

Przygotowanie animacji - sklepy i stacje paliw

dane=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)
p <- ggplot(
  dane, 
  aes(x = val_58964, y=val_58965, size = val_72305/1000000, colour = name)
  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "liczba sklepów", y = "liczba stacji paliw")+
  labs(color="Województwo",size="Ludność w mln.")
p

Uruchomienie animacji

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

Przygotowanie animacji - sklepy

anim_sklepy <- ggplot(dane, aes(factor(year),val_58964 )) +
  geom_boxplot(color=4,fill = "grey") +
  labs(x = "Rok", y = "Liczba sklepów")+
  transition_manual(year, cumulative = TRUE)

Uruchomienie animacji

animate(anim_sklepy, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - stacje paliw

anim_sp <- ggplot(dane, aes(factor(year),val_58965 )) +
  geom_boxplot(color=4,fill = "grey") +
  labs(x = "Rok", y = "Liczba stacji paliw")+
  transition_manual(year, cumulative = TRUE)

Uruchomienie animacji

animate(anim_sp, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - sklepy

anim_sklepy <- ggplot(dane, aes(factor(year),val_58964 )) +
  geom_boxplot() +
  labs(x = "Rok", y = "Liczba sklepów")+
  transition_manual(year, cumulative = TRUE)

Uruchomienie animacji

animate(anim_sklepy, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - sklepy

p<-ggplot(dane, aes(val_58964/val_72305*1000, fill = name)) +
  geom_histogram()
p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}",x="Liczba sklepów na 1 tys. mieszkańców")

Przygotowanie animacji - sklepy i stacje paliw

dane=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)

Przygotowanie animacji - stacje paliw

p <- ggplot(
  dane, 
  aes(x = val_58964, y=val_58965, size = val_72305, colour = name)
  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "Liczba sklepów", y = "Liczba stacji paliw")
p

Uruchomienie animacji

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

Przygotowanie animacji - sklepy i stacje paliw

p + facet_wrap(~name) +
  transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}")

📘 Liczba urodzeń i zgonów na 1000 mieszkańców

Pobranie danych z Banku Danych Lokalnych

dane=get_data_by_variable(c("72305","63221","63215"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004)

Przygotowanie animacji - liczba urodzeń i zgonów na 1000 mieszkańców

p <- ggplot(
  dane, 
  aes(x = val_63221/val_72305*1000, y=val_63215/val_72305*1000, size = val_72305/1000000, colour = name)  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "Urodzenia żywe na 1000 mieszkańców", y = "Zgony  na 1000 mieszkańców")+
  labs(color="Województwo",size="Ludność w mln.")
p

Animacja

anim=p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")
animate(anim, height = 8, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Animacja - inna forma uruchomienia

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

Prezentacja w oknach (facet_wrap) - liczba urodzeń i zgonów na 1000 mieszkańców

p + facet_wrap(~name) +
  transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}")

Animacja - efekt shadow_wake)

p+ transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}") +
  shadow_wake(wake_length = 0.1, alpha = FALSE)

Animacja - efekt shadow_mark)

p+ transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}") +
  shadow_mark(alpha = 0.3, size = 0.5)

Przygotowanie animacji - boxplot

anim2 <- ggplot(dane, aes(factor(year), val_63221/val_72305*1000)) +
  geom_boxplot(color=3) +
  transition_manual(year, cumulative = TRUE)+
  labs(x = "Rok", y = "urodzenia żywe na 1000 ludności")

Animacja

anim2
animate(anim2, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - wykres rozrzutu

anim <- ggplot(dane, aes(x=val_63221/val_72305*1000, y=val_63215/val_72305*1000,colour=name)) +
  geom_point() +
  labs(title = "{closest_state}") +
  transition_states(year, transition_length = 4, state_length = 1)+
  labs(x = "Urodzenia żywe na 1000 ludności", y = "Zgony na 1000 ludności")+
  labs(color="Województwo")

Animacja

animate(anim, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - wykres rozrzutu + dodatkowe parametry

anim1 <- anim +
  shadow_wake(wake_length = 0.05)
animate(anim1, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Animacja

anim2 <- anim +
  shadow_wake(0.05, size = 2, alpha = FALSE, colour = 'grey92')
animate(anim2, detail = 5,height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Mieszkania

Pobranie danych z BDL

dane=get_data_by_variable(c("633688","633690","633691"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004)

Przygotowanie animacji

p <- ggplot(
  dane, 
  aes(x = val_633688, y=val_633691,  colour = name)  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "do 40m2", y = "pow 80m2")
p

Animacja

r<-p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

animate(r, detail = 5,height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

## 📘 Ceny - woda zimna, węgiel kamienny i energia

Pobranie danych z BDL (cena 1 m3 wody zimnej)

dane=get_data_by_variable("5070",unitLevel=2)
theme_set(theme_bw())

Cena wody zimnej - przygotowanie animacji

dane=get_data_by_variable("5070",unitLevel=2)
p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1m^3 wody zimnej w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

p + transition_reveal(as.numeric(year))

p + 
  geom_point() +
  transition_reveal(as.numeric(year))

Animacja - dodanie parametrów animacji

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

Pobranie danych z BDL (cena 1 t węgla kamiennego)

dane=get_data_by_variable("5029",unitLevel=2)

Przygotowanie animacji

p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1 tony węgla kamiennego w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

p + transition_reveal(as.numeric(year))

Animacja

p + 
  geom_point() +
  transition_reveal(as.numeric(year))

Animacja - dodanie parametrów animacji

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

Pobranie danych z BDL (cena 1 kWh energii elektrycznej)

dane=get_data_by_variable("5071",unitLevel=2)

Przygotowanie animacji

p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1kWh energii elektrycznej zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

📘 Dochody na 1 mieszkańca w powiatach

Pobranie danych z BDL

get_variables("P2627")
## # A tibble: 18 × 7
##        id subjectId n1                 n2    level measureUnitId measureUnitName
##     <int> <chr>     <chr>              <chr> <int>         <int> <chr>          
##  1  76973 P2627     gminy łącznie z m… ogół…     6             4 zł             
##  2  76974 P2627     miasta na prawach… ogół…     6             4 zł             
##  3  76975 P2627     gminy bez miast n… ogół…     6             4 zł             
##  4  76976 P2627     gminy łącznie z m… doch…     6             4 zł             
##  5  76977 P2627     miasta na prawach… doch…     6             4 zł             
##  6  76978 P2627     gminy bez miast n… doch…     6             4 zł             
##  7  76979 P2627     gminy łącznie z m… udzi…     6             4 zł             
##  8  76980 P2627     miasta na prawach… udzi…     6             4 zł             
##  9  76981 P2627     gminy bez miast n… udzi…     6             4 zł             
## 10  76982 P2627     gminy łącznie z m… doch…     6             4 zł             
## 11  76983 P2627     miasta na prawach… doch…     6             4 zł             
## 12  76984 P2627     gminy bez miast n… doch…     6             4 zł             
## 13 149128 P2627     gminy łącznie z m… doch…     6             4 zł             
## 14 149129 P2627     miasta na prawach… doch…     6             4 zł             
## 15 149130 P2627     gminy bez miast n… doch…     6             4 zł             
## 16 149131 P2627     gminy łącznie z m… doch…     6             4 zł             
## 17 149132 P2627     miasta na prawach… doch…     6             4 zł             
## 18 149133 P2627     gminy bez miast n… doch…     6             4 zł
get_data_by_variable("76974",unitLevel=2)
## # A tibble: 336 × 8
##    id    name  year    val measureUnitId measureName attrId attributeDescription
##    <chr> <chr> <chr> <dbl> <chr>         <chr>        <int> <chr>               
##  1 0112… MAŁO… 2002  2022  4             zł               1 ""                  
##  2 0112… MAŁO… 2003  2098  4             zł               1 ""                  
##  3 0112… MAŁO… 2004  2379  4             zł               1 ""                  
##  4 0112… MAŁO… 2005  2674  4             zł               1 ""                  
##  5 0112… MAŁO… 2006  3055. 4             zł               1 ""                  
##  6 0112… MAŁO… 2007  3607. 4             zł               1 ""                  
##  7 0112… MAŁO… 2008  3876. 4             zł               1 ""                  
##  8 0112… MAŁO… 2009  4122. 4             zł               1 ""                  
##  9 0112… MAŁO… 2010  4430. 4             zł               1 ""                  
## 10 0112… MAŁO… 2011  4412. 4             zł               1 ""                  
## # ℹ 326 more rows

Przygotowanie animacji

# 76974 P2627     miasta na prawach powiatu
#         ogółem 

dane=get_data_by_variable("76974",unitLevel=2)
p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Dochody na 1 mieszkańca miast na prawach powiatu w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)