▶️ Tematyka

  • Załadowanie pakietów i charakterystyka zbioru gapminder
  • Konstrukcja wykresów w ggplot2 dla danych ze zbioru gapminder
    • słupkowy
    • liniowy
    • gęstość
    • histogram
    • histogram i gęstość
    • pudełkowy
    • wiolinowy
    • rozrzutu
  • Konstrukcja i uruchomienie animacji
  • Zapisanie animacji w pliku gif i wyświetlenie w zewnętrznym oknie


📘 Załadowanie pakietów i podstawowe informacje o zbiorze gapminder

❕ Załadowanie wymaganych pakietów

library(ggplot2)
library(dplyr)
library(gapminder)

️✔️️Dla konstrukcji wykresów w tej części wykorzystan* zbiór gapminderz pakietu gapminder

🔗 Opis zbioru gapminder

Informacja o zbiorze gapminder

summary(gapminder)
##         country        continent        year         lifeExp     
##  Afghanistan:  12   Africa  :624   Min.   :1952   Min.   :23.60  
##  Albania    :  12   Americas:300   1st Qu.:1966   1st Qu.:48.20  
##  Algeria    :  12   Asia    :396   Median :1980   Median :60.71  
##  Angola     :  12   Europe  :360   Mean   :1980   Mean   :59.47  
##  Argentina  :  12   Oceania : 24   3rd Qu.:1993   3rd Qu.:70.85  
##  Australia  :  12                  Max.   :2007   Max.   :82.60  
##  (Other)    :1632                                                
##       pop              gdpPercap       
##  Min.   :6.001e+04   Min.   :   241.2  
##  1st Qu.:2.794e+06   1st Qu.:  1202.1  
##  Median :7.024e+06   Median :  3531.8  
##  Mean   :2.960e+07   Mean   :  7215.3  
##  3rd Qu.:1.959e+07   3rd Qu.:  9325.5  
##  Max.   :1.319e+09   Max.   :113523.1  
## 

Informacja o zbiorze w tabeli

table(gapminder$continent, gapminder$year)
##           
##            1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 2002 2007
##   Africa     52   52   52   52   52   52   52   52   52   52   52   52
##   Americas   25   25   25   25   25   25   25   25   25   25   25   25
##   Asia       33   33   33   33   33   33   33   33   33   33   33   33
##   Europe     30   30   30   30   30   30   30   30   30   30   30   30
##   Oceania     2    2    2    2    2    2    2    2    2    2    2    2

📘 Wybrane wykresy dla danych ze zbioru ‘gapminder’

️️✔️ Wykresy przedstawiają jednocześnie dane z wielu różnych lat

️️✔️ Do konstrukcji wykresów w tej części wykorzystano dostępny w R zbiór gapminder

Wykres słupkowy - podstawowa konstrukcja

ggplot(gapminder, aes(x=continent)) + geom_bar()

Wykres słupkowy - dodanie kolorów

ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()

Wykres słupkowy - dodanie etykiety legendy

ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()+labs(fill='Kontynent')

Wykres słupkowy - usunięcie legendy

ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()+guides(fill='none')

Wykres zapamiętany w obiekcie rys

rys=ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()+guides(fill='none')

Wykres słupkowy - transformacja skali

rys + coord_trans(y="sqrt")

Wykres słupkowy - współrzędne biegunowe

rys + coord_polar()

Wykres słupkowy - poziomy

rys+coord_flip()

Wybrane państwa - wykres liniowy

kraje <- c("Poland", "Germany", "Czech Republic", "Austria","Romania")
ggplot(subset(gapminder, country %in% kraje),
       aes(x = year, y = lifeExp, color = country)) + geom_line() + geom_point()+
    theme(legend.position='bottom') ####

Wykres gęstości

ggplot(gapminder, aes(lifeExp)) + 
    geom_density()

Wykres gęstości z dodatkowymi parametrami

ggplot(gapminder, aes(lifeExp)) + 
    geom_density(linewidth=1.5, fill="blue", alpha=0.6)

Histogram

ggplot(gapminder, aes(lifeExp)) + 
geom_histogram( binwidth=4, color="black", fill="lightblue", alpha=0.5)

Histogram i gęstość

ggplot(gapminder, aes(lifeExp)) + 
geom_histogram(aes(y=after_stat(density)), binwidth=4, color="black", fill="lightblue", alpha=0.5)+
  geom_density()

Histogram i gęstość - dodatkowe parametry

ggplot(data=gapminder, aes(x=lifeExp)) + 
    geom_histogram(aes(y=after_stat(density)), binwidth=4, color="black", fill="lightblue", alpha=0.5)+
    geom_density(linewidth=1.5, fill="pink", alpha=0.2) 

Gęstości dla poszczególnych kontynentów

ggplot(data=gapminder, aes(x=lifeExp, fill=continent)) +
    geom_density(alpha=0.3)

Utworzenie obiektu rys1

rys1 <- ggplot(gapminder, aes(continent, lifeExp, fill=continent))

Wyświetlenie obiektu rys1 z reprezentacją graficzną boxplot

rys1 +
    geom_boxplot(outlier.size=2)

Wyświetlenie obiektu rys1 z reprezentacją graficzną violin

rys1 +
  geom_violin()

Konstrukcja i wyświetlenie obiektu rys2

rys2 <- ggplot(data=gapminder,
              aes(x=gdpPercap, y=lifeExp))
rys2

Wyświetlenie obiektu rys2 z reprezentacją graficzną point

UWAGA: na wykresie zamieszczono jednocześnie dane z różnych lat

rys2 + geom_point()

Wyświetlenie obiektu rys2 z reprezentacją graficzną point i kolorami dla kontynentów

rys2 + geom_point(aes(color=continent))

Wyświetlenie obiektu rys2 z reprezentacją graficzną violin, kolorami dla kontynentów w oddzielnych oknach

rys2+
  geom_point(aes(color=continent)) + 
  facet_grid(year~continent)

📘 Animacje w ggplot2 - pakiet gganimation

❕ Załadowanie bibliotek dla animacji

library(gganimate)
library(gifski)

Utworzenie obiektu p

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7) +
  theme(legend.position = 'none') +
  labs(title = 'Rok: {frame_time}', x = 'PKB na osobę', y = 'oczekiwana długość życia') +
  transition_time(year)

Wyświetlenie obiektu p

p

Utworzenie obiektu p

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7) +
  theme(legend.position = 'none') +
  facet_wrap(~continent) +
  labs(title = 'Rok: {frame_time}', x = 'PKB na osobę', y = 'oczekiwana długość życia') +
  transition_time(year)

Wyświetlenie obiektu p

p

Uruchomienie animacji

animate(p, 100, 10)

Uruchomienie animacji z parametrami

animate(p, nframes=100, fps=10,height = 20, width = 30, units = "cm",res=150)

Animacja - określenie różnych parametrów

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7) +
  theme(legend.position = 'none') +
  facet_wrap(~continent) +
  labs(title = 'Rok: {frame_time}', x = 'PKB na osobę', y = 'oczekiwana długość życia') +
  transition_time(year)+
  scale_colour_manual(values = country_colors) +
  scale_size(range = c(2, 12)) +
  scale_x_log10() +
  facet_wrap(~continent) +
  theme(legend.position = 'none') +
  labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
  transition_time(year) +
  ease_aes('linear')
p

📘 Zapisanie animacji w pliku gif i wyświetlenie w zewnętrznym oknie

makeplot <- function(){
  datalist <- split(gapminder, gapminder$year)
  lapply(datalist, function(data){
    p <- ggplot(data, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
      scale_size("population", limits = range(gapminder$pop)) + geom_point() + ylim(20, 90) +
      scale_x_log10(limits = range(gapminder$gdpPercap)) + ggtitle(data$year) + theme_classic()
    print(p)
  })
}
gif_file <- file.path(tempdir(), 'gapminder.gif')
save_gif(makeplot(), gif_file, 1280, 720, res = 144)
utils::browseURL(gif_file)