Geanimeerde staafdiagrammen die rechtstreeks in een bericht op elke website kunnen worden ingesloten, worden steeds populairder. Ze geven de dynamiek van veranderingen in alle kenmerken gedurende een bepaalde tijd weer en doen dit duidelijk. Laten we eens kijken hoe we ze kunnen maken met R en generieke pakketten.
Deze twee zijn uiterst noodzakelijk. Bovendien zijn er een schoonmaakster, een conciΓ«rge en een weegschaal nodig om de gegevens te beheren, de array op te schonen en dienovereenkomstig te formatteren.
Gegevens
De originele dataset die we in dit project zullen gebruiken, wordt gedownload van de website van de Wereldbank. Daar zijn ze - Gegevens van de Wereldbank. Dezelfde gegevens, als u deze kant-en-klaar nodig heeft, kunt u downloaden via projectmappen.
Wat voor soort informatie is dit? De steekproef bevat de bbp-waarde van de meeste landen voor meerdere jaren (van 2000 tot 2017).
Gegevensverwerking
We zullen de onderstaande code gebruiken om het vereiste gegevensformaat voor te bereiden. We wissen de kolomnamen, zetten de getallen om in een getalnotatie en converteren de gegevens met behulp van de functie collect(). Alles wat binnenkomt bewaren we in gdp_tidy.csv voor verder gebruik.
Een complete set feitelijke histogrammen plotten met behulp van ggplot2.
Animeer statische histogrammen met de gewenste parameters met behulp van gganimate.
De laatste stap is het renderen van de animatie in het gewenste formaat, inclusief GIF of MP4.
Bibliotheken laden
bibliotheek (tidyverse)
bibliotheek(geanimeerd)
Gegevensbeheer
In deze stap moet u de gegevens filteren om de top 10 van landen voor elk jaar te verkrijgen. Laten we verschillende kolommen toevoegen waarmee we een legenda voor het histogram kunnen weergeven.
gdp_tidy <- read_csv("./data/gdp_tidy.csv")
gdp_formatted <- gdp_tidy %>%
group_by(year) %>%
# The * 1 makes it possible to have non-integer ranks while sliding
mutate(rank = rank(-value),
Value_rel = value/value[rank==1],
Value_lbl = paste0(" ",round(value/1e9))) %>%
group_by(country_name) %>%
filter(rank <=10) %>%
ungroup()
Statische histogrammen maken
Nu we een gegevenspakket in het vereiste formaat hebben, beginnen we met het tekenen van statische histogrammen. Basisinformatie - top 10 landen met maximaal BBP voor het geselecteerde tijdsinterval. Voor elk jaar maken we grafieken.
Het maken van plots met ggplot2 is heel eenvoudig. Zoals je in het codegedeelte hierboven kunt zien, zijn er verschillende belangrijke punten met de functie thema(). Ze zijn nodig zodat alle elementen zonder problemen animeren. Sommige ervan worden indien nodig mogelijk niet weergegeven. Voorbeeld: Alleen de verticale rasterlijnen en legenda's worden getekend, maar de astitels en verschillende andere componenten worden uit het gebied verwijderd.
animatie
De sleutelfunctie hier is transition_states(), het voegt afzonderlijke statische grafieken samen. view_follow() wordt gebruikt om rasterlijnen te tekenen.
anim = staticplot + transition_states(year, transition_length = 4, state_length = 1) +
view_follow(fixed_x = TRUE) +
labs(title = 'GDP per Year : {closest_state}',
subtitle = "Top 10 Countries",
caption = "GDP in Billions USD | Data Source: World Bank Data")
Renderen
Zodra de animatie is gemaakt en opgeslagen in het anim-object, is het tijd om deze weer te geven met de functie animate(). De renderer die in animate() wordt gebruikt, kan verschillen, afhankelijk van het vereiste type uitvoerbestand.