Mapping - map variables to the chart
Victor Perrier
2024-10-30
Source:vignettes/billboarder-mapping.Rmd
billboarder-mapping.Rmd
Introduction
There’s 3 ways with billboarder
to pass data to
construct a chart :
- Use a
data.frame
with only variable that need to be used, typically for a barchart, the first column is used for x-axis, the second for y-axis. - Pass your data to
billboarder
and use functionbb_aes
in a “pipe” flow. - Use function
bbaes
inside chart builder helper such asbb_barchart
,bb_linechart
, …
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"))