LAB: Fake report

Motivation

Amet commodo faucibus risus neque rutrum sodales ante eleifend inceptos est pharetra?

Reproducible data gathering

Data and metadata should be retrieved programmatically.

Here is an example from the OECD API documentation. Other providers have their own API for example Eurostat.

url <- "https://sdmx.oecd.org/public/rest/data/OECD.SDD.STES,DSD_STES@DF_CLI/.M.LI...AA...H?startPeriod=2023-02&dimensionAtObservation=AllDimensions&format=csvfilewithlabels"

df <-  read.csv(url)

df |>
  dplyr::select(sample(seq(1,30), size=10)) |>
  tibble::glimpse(width=30)
Rows: 770
Columns: 10
$ Observation.value       <lgl> …
$ Unit.of.measure         <chr> …
$ Time.horizon            <chr> …
$ TIME_HORIZ              <chr> …
$ Reference.area          <chr> …
$ FREQ                    <chr> …
$ STRUCTURE_NAME          <chr> …
$ Calculation.methodology <chr> …
$ TRANSFORMATION          <chr> …
$ Observation.status      <chr> …

Note that in your report, data gathering chunks should go to the appendix.

200 countries, 50 years, 20 lines of code

You should build your report and your presentation around plots and tables.

Sit varius nibh ultricies convallis fames velit ut inceptos dapibus. Mauris sed nisi magnis odio duis cum vel quis sagittis nisi – posuere, nisi parturient mus lectus. Curae hac nascetur eu netus vel eleifend, et duis facilisis augue nibh vulputate. Cursus vitae fringilla magnis, fames potenti velit nunc fermentum risus. Enim ante egestas rutrum nisl posuere quisque quisque.

Display tables with style (no kitsch please).

Country Continent Year Life Expectancy Population (Millions Inhab.) gdpPercap
Philippines Asia 1957 51.3 26.1 $1,548
Mongolia Asia 2002 65.0 2.7 $2,141
United Kingdom Europe 1977 72.8 56.2 $17,429
France Europe 1992 77.5 57.4 $24,704
Zambia Africa 1977 51.4 5.2 $1,589
Niger Africa 1977 41.3 5.7 $809
Uruguay Americas 1967 68.5 2.7 $5,445
Argentina Americas 1957 64.4 19.6 $6,857
Australia Oceania 1987 76.3 16.3 $21,889
New Zealand Oceania 1997 77.5 3.7 $21,050

Adipiscing nascetur, per sem blandit montes venenatis cubilia nam parturient ac. Curae ridiculus leo, morbi at donec penatibus parturient. Phasellus netus consequat cursus litora fames, augue congue nunc. Vehicula egestas consequat laoreet aenean – consequat pellentesque, ut dignissim dictum dis.

Visualization matters

Static with plotly

Sit varius nibh ultricies convallis fames velit ut inceptos dapibus. Mauris sed nisi magnis odio duis cum vel quis sagittis nisi – posuere, nisi parturient mus lectus. Curae hac nascetur eu netus vel eleifend, et duis facilisis augue nibh vulputate. Cursus vitae fringilla magnis, fames potenti velit nunc fermentum risus. Enim ante egestas rutrum nisl posuere quisque quisque.

Interaction and animation shine

Wizardry

Sit ultrices nisi proin dictumst ac primis augue egestas a. Odio ultricies sagittis sapien sollicitudin sem convallis tempor montes quisque! Hendrerit urna nunc pulvinar nostra ullamcorper convallis sem. Blandit habitasse cubilia nisi nisi neque habitant, mollis taciti vivamus fermentum ultricies.

Appendix

The appendix should contain the code that helped you create the document

Dolor nulla facilisis duis at varius sociis! Lectus magna aptent hac suspendisse tempus torquent tempor primis magnis ornare netus hac lacinia, fames turpis vulputate nisl, bibendum gravida commodo.

# Load the data
#
gapminder <- gapminder::gapminder
#
#
# Using package gt 
#
gapminder |>
  dplyr::slice_sample(n=2, by= continent) |>
  dplyr::mutate(pop=pop/1e6) |>
  gt::gt() |>
  gt::fmt_number(columns=c(pop, lifeExp),decimals=1)|>
  gt::fmt_currency(columns=gdpPercap, use_subunits=FALSE) |>
  gt::cols_label(
    country = "Country",
    continent = "Continent",
    year = "Year",
    lifeExp = "Life Expectancy",
    pop = "Population (Millions Inhab.)", 
    .fn =  stringr::str_to_title
    )
#
#
# A neater color scale 
#
neat_color_scale <-
      c("Africa" = "#01d4e5",
        "Americas" = "#7dea01" ,
        "Asia" = "#fc5173",
        "Europe" = "#fde803",
        "Oceania" = "#536227")
#
#
a_year <- sample(gapminder$year, 1)

p <- gapminder |>
    filter(year==a_year) |>
    ggplot() +
    aes(x = gdpPercap) +
    aes(y = lifeExp) +
    aes(size = pop) +
    aes(text = country) +                   #
    aes(fill = continent) +
    aes(color= continent) +
    aes(frame = year) +                     #
    geom_point(alpha=.5) +
    scale_x_log10() +
    scale_size_area(max_size = 15,
                    labels= scales::label_number(scale=1/1e6,
                                                suffix=" M")) +
    scale_fill_manual(values = neat_color_scale) +
    labs(title= glue("Gapminder  {a_year}"),
        x = "Yearly Income per Capita",
        y = "Life Expectancy",
        caption="From sick  and poor (bottom left) to healthy and rich (top right)")

p 

(p + theme(legend.position = "none")) |> 
    plotly::ggplotly(height = 500, width=750)

(p %+% 
    gapminder + 
    theme(legend.position = "none") +
    ggtitle("Gapminder")) |> 
    plotly::ggplotly(height = 500, width=750)