x-mas tRees with gganimate, ggplot, plotly and friends

At the last homework before Christmas I asked my students from DataVisTechniques to create a ,,Christmas style” data visualization in R or Python (based on simulated data).

Libaries like rbokeh, ggiraph, vegalite, shiny+ggplot2 or plotly were popular last year. This year there are also some nice submissions that use gganimate.

Find source codes here. Plots created last year are here.
And here are homeworks from this year.

Trees created with gganimate (and gifski)



Trees created with ggplot2 (and sometimes shiny)









Trees created with plotly


Trees created with python


Trees created with rbokeh


Trees created with vegalite


Trees created with ggiraph

Data, movies and ggplot2

Yet another boring barplot?
No!
I’ve asked my students from MiNI WUT to visualize some data about their favorite movies or series.
Results are pretty awesome.
Believe me or not, but charts in these posters are created with ggplot2 (most of them)!

Star Wars

Fan of StaR WaRs? Find out which color is the most popular for lightsabers!
Yes, these lightsabers are created with ggplot2.
Would you guess which characters are overweighed?
Find the R code and the data on the GitHub.

Harry Pixel

Take fames from Harry Potter movies, use k-means to extract dominant colors for each frame, calculate derivative for color changes and here you are.
The R code and the poster are here.
(steep derivatives in color space is a nice proxy for dynamic scenes).

Social Network for Super Heroes

Have you ever wondered how the distribution of super powers looks like among Avengers?
Check put this poster or dive in the data.

Pardon my French, but…

Scrap transcripts from over 100k movies, find out how many curse words you may find in these movies, plot these statistics.
Here are sources and the poster.
(Bonus Question 1: how curse words are related to Obama/Trump presidency?
Bonus Question 2: is the number of hard curse words increasing or not?)

Rick and Morty

Interested in the demography of characters from Rick and Morty?
Here is the R code and the poster.
(Tricky question: what is happening with season 3?)

Twin Peaks

Transcripts from Twin Peaks are full of references to coffee and donuts.
Except the episode in which the Laura’s murdered is revealed (ups, spoiler alert).
Check out this by yourself with these scripts.

The Lion King

Which Disney’s movie is the most popular?
It wasn’t hard to guess.

Box Office

5D scatterplots?
Here you have.

Next time I will ask my students to visualize data about R packages…
Or maybe you have some other ideas?

Po co oglądać wykresy?

Graficy często upiększają wykresy po to by ładniej wyglądały.
W większości przypadków jest to jednak próżny trud (o ile nie chodzi o Data Art), bo o wartości wykresu świadczy głównie to, czy pokazuje on ciekawą historię. Bez ciekawej historii trudno coś wykrzesać.

Poniżej wybrałem cztery prace domowe studentów z kursu Techniki Wizualizacji Danych z ostatnich dwóch tygodni. Mnie te historie się spodobały (prace domowe polegają na wizualizacji w ggplot2 danych umieszczonych ostatnio w gazetach/portalach informacyjnych).

Kto strzelił więcej goli, Messi czy Ronaldo?
Poniższy wykres pokazuje, że obaj panowie idą łeb w łeb. (Autor: Piotr Smuda)

Skąd się lata w Polsce?
Poniższy wykres pokazuje liczbę pasażerów wylatujących z różnych lotnisk. (Autorka: Ewa Baranowska)

Jaka jest stawka akcyzy przy sprowadzaniu 6-litrowego Dodge Ramchargera?
Poniższy wykres pokazuje stawki akcyzy w zależności od wielkości silnika i roku produkcji. (Autorka: Marta Jóźwik)

Ile i jakie tablety się sprzedaje na świecie?
Poniższy wykres pokazuje sprzedaż i zmianę sprzedaży w zależności od producenta. (Autorka: ponownie Ewa Baranowska)

ggmail + forecast = how many emails I will get tomorrow?


During the eRum 2016, Adam Zagdański gave a very good tutorial about time series modeling. Among other things I’ve learned that the forecast package (created by Rob Hyndman) got cool new plots based on the ggplot2 package.

Let’s use it to play with mailbox statistics for my gmail account!

1. Get the data

Follow this link to download the data from your gmail account as a single mbox file.
It may be large (15GB in my case), but for further steps it’s enough to keep only headers. grep + cat will do the job.

Czytaj dalej ggmail + forecast = how many emails I will get tomorrow?

Z dziennika nauczyciela akademickiego – Techniki Wizualizacji Danych

Prowadzę w tym semestrze Techniki Wizualizacji Danych na MiNI PW. Omawiamy najróżniejsze narzędzia do tworzenia grafiki statycznej i interaktywnej. Począwszy od ggplot2 przez google vis, D3 po Adobe Illustrator.
Ale w wizualizacji danych to nie narzędzie jest najważniejsze, ale komunikatywność historii, którą się graficznie przedstawia.

Jak ją ćwiczyć?

Akurat tutaj duże nadzieje pokładam w pracach domowych. W ramach ćwiczeń, co tydzień, studenci wyszukują w gazetach czy portalach informacyjnych dane lub wykresy, a następnie przygotowują wizualizacje danych z użyciem narzędzi, które akurat w danym tygodniu omawiamy.

Poniżej pokażę dwie bardzo ciekawe prace domowe z pierwszego tygodnia zajęć (ggplot2).

Pani Ewa Baranowska znalazła w Rzeczpospolitej poniższą tabelę dotyczącą liczby spraw prowadzonych przez prokuratorów w różnych krajach.

I z odrobiną magii w ggplot2 powstał poniższy wykres. Nieporównywalnie czytelniejszy niż ww. tabela. Wyraźnie widać różnice pomiędzy wschodem a zachodem Europy.

Drugą pracę, która przypadła mi do gustu, wykonał pan Maksymilian Mazur. Dane dotyczące walki pomiędzy Danem Hendersonem a Michaelem Bispingiem (tutaj link) przedstawił je za pomocą poniższego wykresu.

Wyraźnie widać różnice pomiędzy 2 i 5 rundą. Nie było jej widać w oryginalnej grafice.

Gramatyka języka wizualizacji danych

Screen Shot 2016-03-20 at 20.39.28

,,Gramatyka języka wizualizacji danych” to nowy rozdział w drugim wydaniu ,,Zbioru esejów o sztuce prezentowania danych”. Jest on już dostępny online na stronie http://biecek.pl/Eseje/indexGramatyka.html.

Ten esej jest oparty głównie o materiały z książki Lelanda Wilkinsona ,,The Grammar of Graphics”, moje doświadczenia z pakietem ggplot2 oraz eksperymenty z narzędziami do wyrażania komunikatów opartych o dane (w tym wykresów statystycznych, ale nie tylko).

To nie są materiały do nauki pakietu ggplot2 (ggplot2 to jedna z implementacji gramatyki języka wizualizacji, być może to najbardziej dojrzała implementacja ale z pewnością nie doskonała, jeszcze). Jest to raczej próba rozłożenia na niezależne części elementów wykresu, które są w niezależny sposób z wykresu odczytywane.

Użycie pakietu archivist pozwoliło na umieszczenie uchwytów oraz instrukcji odtwarzających wszystkie wykresy w tym eseju. Kompletna lista wykresów, kodów R i uchwytów archivista znajduje się tutaj https://rawgithub.com/pbiecek/Eseje/master/GamatykaGrafiki.html.

Gdyby ktoś szukał polskojęzycznych materiałów poświęconych nauce podstaw ggplot2 to polecam ,,Przewodnik po pakiecie R” (tutaj lub tutaj). Angielskojęzycznym materiałów jest wiele, można zacząć od strony domowej samego projektu http://docs.ggplot2.org/current/.

geom_christmas_tree(): a new geom for ggplot2 v2.0

iris2
Version 2.0 of the ggplot2 package (on GitHub) has a very nice mechanism for adding new geoms and stats (more about it here).
Christmas are coming, so maybe one would like to make his plots more tree’ish?
Below you will find a definition of geom_christmas_tree() geom. It supports following aesthetics: size (number of segments), fill, color, x and y.

With mpg data you can plot a colourful forest.

ggplot(mpg, aes(displ, hwy, fill=manufacturer)) + 
  geom_christmas_tree(size=2)

cars

Czytaj dalej geom_christmas_tree(): a new geom for ggplot2 v2.0

Transformacje zmiennych, skali, współrzędnych w ggplot2

Przygotowuję nowy rozdział ,,Esejów…”. Będzie on dotyczył The Grammar of Graphics i jej implementacji w pakiecie ggplot2. Systematyzując poszczególne elementy składni zdarzają się różne smaczki i dzisiaj o jednym z nich, czyli o tym jak na wykresach stosować transformacje.

Zacznijmy od wykresu bez żadnych transformacji. Za przykład wykorzystamy dane o irysach. Do wykresu dodamy punkty (geom_point) oraz prostą trendu liniowego (geom_smooth).

library(ggplot2)
# Uchwyt: 
# archivist::aread("pbiecek/Eseje/arepo/0fc9e4e43559336a44598117911f2e4f")
ggplot(iris, aes(Sepal.Length, Petal.Length)) + 
  geom_point() + 
  geom_smooth(se=FALSE, method="lm") +
  theme_bw()

Zobaczmy jak wygląda ta zależność po transformacji logarytmicznej.
Pakiet ggplot2 przewiduje transformacje na trzech poziomach: zmiennych, skali i układu współrzędnych. Zobaczmy czym się one różnią i jak je wykonać.

Czytaj dalej Transformacje zmiennych, skali, współrzędnych w ggplot2

Kto bierze korepetycje z matmy? – jak to zrobić w R?

W poprzednim wpisie pokazywaliśmy, którzy z uczniów w Polsce mają częściej zajęcia dodatkowe z matematyki.

A dziś pokażemy jak taki obrazek zrobić samodzielnie! Wystarczy przekopiować kilka linii kodu do R i mamy wykres dla Polski lub innego, wybranego kraju.

Zrobimy to w czterech krokach.

Czytaj dalej Kto bierze korepetycje z matmy? – jak to zrobić w R?