Mapping - map variables to the chart

Victor Perrier

2024-09-09

Introduction

There’s 3 ways with billboarder to pass data to construct a chart :

Data

We’ll use data about the french electricity production between 2012 and 2016 :

data("prod_par_filiere")
str(prod_par_filiere)
#> 'data.frame':    5 obs. of  11 variables:
#>  $ annee             : chr  "2012" "2013" "2014" "2015" ...
#>  $ prod_total        : num  542 550 540 547 531
#>  $ prod_therm        : num  48.1 43.6 25.9 34.4 45.9
#>  $ prod_hydraulique  : num  63.8 75.5 68.1 59.1 63.9
#>  $ prod_bioenergies  : num  5.8 7.1 7.5 8 8.5
#>  $ prod_eolien       : num  14.9 15.9 17.1 21.1 20.7
#>  $ prod_therm_charbon: num  17.4 19.9 8.4 8.6 7.3
#>  $ prod_solaire      : num  4.1 4.7 5.9 7.4 8.3
#>  $ prod_therm_gaz    : num  24 19.9 14.3 21.9 35.3
#>  $ prod_nucleaire    : num  405 404 416 417 384
#>  $ prod_therm_fioul  : num  6.7 3.8 3.3 3.8 3.3

First method : use a data.frame

For creating this simple barchart, we need to use two columns of our data.frame

billboarder() %>% 
  bb_barchart(data = prod_par_filiere[, c("annee", "prod_bioenergies")])

Variable annee is used on the x-axis, and prod_bioenergies as y values.

This is similar for line chart :

billboarder() %>% 
  bb_linechart(data = prod_par_filiere[, c("annee", "prod_bioenergies")])

Second method : with mapping

We can pass our data to function billboarder and then call bb_aes to specify which variable to use :

billboarder(data = prod_par_filiere) %>% 
  bb_aes(x = annee, y = prod_bioenergies) %>% 
  bb_barchart()

You don’t have to pass arguments to bb_barchart.

This is the same for line chart :

billboarder(data = prod_par_filiere) %>% 
  bb_aes(x = annee, y = prod_bioenergies) %>% 
  bb_linechart()

Third method : mapping inside function

Mapping can be specified inside the function which specify the type of chart :

billboarder(data = prod_par_filiere) %>% 
  bb_barchart(mapping = bbaes(x = annee, y = prod_bioenergies))

The function to map variables is bbaes without underscore.

For line chart :

billboarder(data = prod_par_filiere) %>% 
  bb_linechart(mapping = bbaes(x = annee, y = prod_bioenergies))

Grouping variable

Construct a chart with groups differ between the first method and the others. For the first one, data need to be in ‘wide’ format, the other need data in ‘long’ format with a grouping variable.

With ‘wide’ data :

billboarder() %>% 
  bb_barchart(
    data = prod_par_filiere[, c("annee", "prod_bioenergies", "prod_eolien", "prod_solaire", "prod_hydraulique")]
  )

with ‘long’ data :

# prepare data
data("prod_filiere_long")
prod_filiere_long <- prod_filiere_long[
  prod_filiere_long$branche %in% c("bioenergies", "eolien", "solaire", "hydraulique"), 
]
head(prod_filiere_long)
#>    annee     branche prod
#> 11  2012 hydraulique 63.8
#> 12  2013 hydraulique 75.5
#> 13  2014 hydraulique 68.1
#> 14  2015 hydraulique 59.1
#> 15  2016 hydraulique 63.9
#> 16  2012 bioenergies  5.8


billboarder(data = prod_filiere_long) %>% 
  bb_barchart(mapping = bbaes(x = annee, y = prod, group = branche))

Mapping with programming

In Shiny app or in function, you can use bbaes_string or bb_aes_string, these function accept character instead of unquoted variable names :

billboarder(data = prod_filiere_long) %>% 
  bb_barchart(mapping = bbaes_string(x = "annee", y = "prod", group = "branche"))