▶️ Tematyka
- Załadowanie pakietów i charakterystyka zbioru
gapminder
- Konstrukcja wykresów w ggplot2 dla danych ze zbioru
gapminder
- Konstrukcja i uruchomienie animacji
- Zapisanie animacji w pliku gif i wyświetlenie w zewnętrznym
oknie
📘 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 - współrzędne biegunowe

Wykres słupkowy - poziomy

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

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

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

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

Uruchomienie animacji

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)