In deze twee maanden wilde ik toch eens kijken naar interactieve mogelijkheden die het programma R/RStudio ons biedt. Plotly
is zo’n mogelijkheid en daarover gaat dit blog. Shiny
is de andere mogelijkheid en daar zal ik een volgende keer aandacht aan besteden. Plotly
heeft een eigen website waar veel informatie over het programma is te vinden hier adres website. Er is ook een uitgebreide handleiding over Plotly
geschreven hier handleiding. Onlangs stond er op de blog van RBloggers een goede introductie van Laura Ellis, die mij veel vertelde over het gebruik van Plotly
. Haar bijdrage zie hier heb ik hier naar het Nederlands overgezet en hier en daar iets bewerkt.
Een van de belangrijkste redenen dat ik verliefd werd op R, schrijft Laura Ellis in haar blog, kwam door ggplot2
. Zoals Jennifer Thompson het zo welsprekend verwoordde:
“Ik gebruikte R voor
ggplot
, maar tot dan toe hield ik er nooit van”.—Jennifer Thompson
Voor iemand die zeer geïnteresseerd is in het vertellen van verhalen, wordt ggplot2
al snel het favoriete datavisualisatietool. Het is eigenlijk het Zwitserse zakmes voor datavisualisatie. Het kan een grafiek met allerlei afmetingen aan. Deze mogelijkheid is ongelofelijk handig tijdens data verkenningsfasen. Soms wil je echter wel eens naar trends kijken zonder dat het je al te veel moeite kost. Dan bekijk je dichte scatterplots met uitschieters. ggplot2
is hier geweldig in. Maar soms kun je niet alle mogelijke dimensies in de statische grafieken onderzoeken. Dan kun je plotly
gebruiken.
Voer plotly in. Het plotly
-pakket en de ggploty
-functie gaan goed samen, ze bewaren de hoge kwaliteit van ggplot2
grafieken en kunnen het ook nog interactief maken.
In deze tutorial onderzoeken we de mediaan van de gerapporteerde lonen van creatieve beroepen. We onderzoeken de gegevens van deze beroepsgroep van de stad Austin (Texas, USA) voor de jaren 2016 en 2017. Deze dataset is afkomstig van het open dataportaal Austin hier. Het is verbazendwekkend om te zien hoe het AustinGO2.0-team steeds nieuwe en spannende lokale datasets beschikbaar stelt om te verkennen!
Voordat we verder gaan, moeten we eerst de pakketten installeren. Als je dat een keer hebt gedaan moet je ze wel steeds voor gebruik laden.
Om het reproduceer te maken moet je de dataset van de Ausatin open data portal halen en uploaden en Laura Ellis heeft dat hier in haar github repo geplaatst githubrepo
[1] 54 4
SOC.Code Occupation X2016.Median.hourly.earnings
Length:54 Length:54 Min. : 6.79
Class :character Class :character 1st Qu.:14.29
Mode :character Mode :character Median :20.24
Mean :19.68
3rd Qu.:24.25
Max. :34.37
X2017.Median.hourly.earnings
Min. : 6.88
1st Qu.:15.29
Median :20.10
Mean :20.12
3rd Qu.:25.69
Max. :34.37
'data.frame': 54 obs. of 4 variables:
$ SOC.Code : chr "11-2011" "13-1011" "25-1099" "25-4011" ...
$ Occupation : chr "Advertising and promotions managers" "Agents and business managers of artists, performers, and athletes" "Postsecondary teachers" "Archivists" ...
$ X2016.Median.hourly.earnings: num 30.1 21.8 26.9 26.7 32.6 ...
$ X2017.Median.hourly.earnings: num 29.7 22.3 26.3 27.3 30.5 ...
SOC.Code
1 11-2011
2 13-1011
3 25-1099
4 25-4011
5 25-4012
6 25-4013
Occupation
1 Advertising and promotions managers
2 Agents and business managers of artists, performers, and athletes
3 Postsecondary teachers
4 Archivists
5 Curators
6 Museum technicians and conservators
X2016.Median.hourly.earnings X2017.Median.hourly.earnings
1 30.11 29.73
2 21.83 22.31
3 26.92 26.31
4 26.66 27.31
5 32.56 30.46
6 24.33 25.74
We voeren wat eenvoudige transformaties uit om de data voor te bereiden voor een makkelijke scatterplot. Eerst geven we de kolommen een andere naam en daarna hebben we een nieuwe kolom gemaakt om de veranderingen in het jaar 2016 tot 2017 te berekenen dat iets zegt over veranderingen in het mediane loon per beroep.
We creëerden een eenvoudige ggplot2
-scatterplot van de beroepen met de 2017 mediane loon vs percentage jaarverbetering. We voegden een eenvoudige horizontale lijn toe om de nul in de plot te markeren. Dit stelt ons in staat om de jaarveranderingen in het mediane loon gemakkelijker te verwerken. Vervolgens zetten we nog een laatste stap en voeren we onze ggplot2
-scatterplot in de ggplotly
-functie in. Zo ontstaat een interactieve grafiek!
De bovenstaande grafiek is geweldig omdat we met succes gebruik hebben gemaakt van plotly
om de ggplot2
-scatterplot interactief te maken. De data hebben echter niet alles wat we willen en het is niet erg mooi geformatteerd. Laten we dit oplossen!
Corinne Leopold, van het team van Laura Ellis, vond een veel efficiëntere manier om labels toe te wijzen in de plots dan de oplossing die Laura eerder vond eerdere oplossing. We voegen eenvoudigweg de details toe via de esthetische tekstuele eigenschap van de ggplot. Vervolgens wijzen we het toe aan de tooltip in de ggplotly
-functie.
Over het opslaan en delen van de grafiek vermeldt Laure Ellis ook nog het een en ander. Maar daar kijken we hier verder niet naar. Mij ging het erom plotly zelf beter in de vingers te krijgen. De volgende keer maar eens kijken hoe het met Shiny
gaat.