The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
In the following weโll use the insight theme (3 others are available: billboard (default), graph and datalab) and ColorBrewer Set2 as default color palette.
Create barcharts with bb_barchart
:
library(billboarder)
# data
data("prod_par_filiere")
billboarder(data = prod_par_filiere) %>%
bb_barchart(
mapping = aes(x = annee, y = prod_hydraulique),
color = "#102246"
) %>%
bb_y_grid(show = TRUE) %>%
bb_y_axis(
tick = list(format = suffix("TWh")),
label = list(text = "production (in terawatt-hours)", position = "outer-top")
) %>%
bb_legend(show = FALSE) %>%
bb_labs(
title = "French hydraulic production",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
To create a dodge barchart, if your data are in โwideโ format, you
can use the following (otherwise you have to reshape your data in โlongโ
format, with tools such as pivot_longer
):
library(billboarder)
# data
data("prod_par_filiere")
billboarder() %>%
bb_barchart(
data = prod_par_filiere[, c("annee", "prod_hydraulique", "prod_eolien", "prod_solaire")]
) %>%
bb_data(
names = list(prod_hydraulique = "Hydraulic", prod_eolien = "Wind", prod_solaire = "Solar")
) %>%
bb_y_grid(show = TRUE) %>%
bb_y_axis(
tick = list(format = suffix("TWh")),
label = list(text = "production (in terawatt-hours)", position = "outer-top")
) %>%
bb_legend(position = "inset", inset = list(anchor = "top-right")) %>%
bb_labs(
title = "Renewable energy production",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
Same principle for stacked bar charts :
library(billboarder)
# data
data("prod_par_filiere")
# stacked bar chart !
billboarder() %>%
bb_barchart(
data = prod_par_filiere[, c("annee", "prod_hydraulique", "prod_eolien", "prod_solaire")],
stacked = TRUE
) %>%
bb_data(
names = list(prod_hydraulique = "Hydraulic", prod_eolien = "Wind", prod_solaire = "Solar"),
labels = TRUE
) %>%
bb_colors_manual(
"prod_eolien" = "#41AB5D", "prod_hydraulique" = "#4292C6", "prod_solaire" = "#FEB24C"
) %>%
bb_y_grid(show = TRUE) %>%
bb_y_axis(
tick = list(format = suffix("TWh")),
label = list(text = "production (in terawatt-hours)", position = "outer-top")
) %>%
bb_legend(position = "inset", inset = list(anchor = "top-right")) %>%
bb_labs(
title = "Renewable energy production",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
A classic one:
billboarder() %>%
bb_scatterplot(
data = mtcars,
x = "wt", y = "mpg", group = "cyl",
point_opacity = 1
) %>%
# don't display all values on x-axis
bb_axis(x = list(tick = list(fit = FALSE))) %>%
bb_point(r = 5) %>%
# add grids
bb_x_grid(show = TRUE) %>%
bb_y_grid(show = TRUE)
You can make a bubble chart using size
aes :
Create pie charts :
library(billboarder)
# data
data("prod_par_filiere")
nuclear2016 <- data.frame(
sources = c("Nuclear", "Other"),
production = c(
prod_par_filiere$prod_nucleaire[prod_par_filiere$annee == "2016"],
prod_par_filiere$prod_total[prod_par_filiere$annee == "2016"] -
prod_par_filiere$prod_nucleaire[prod_par_filiere$annee == "2016"]
)
)
# pie chart !
billboarder() %>%
bb_piechart(data = nuclear2016) %>%
bb_labs(
title = "Share of nuclear power in France in 2016",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
You can also do donut charts :
billboarder() %>%
bb_donutchart(data = nuclear2016) %>%
bb_donut(
title = "Share of nuclear\nin France",
label = list(
format = JS("function(value, ratio, id) { return id + ': ' + d3.format('.0%')(ratio);}")
)
) %>%
bb_legend(show = FALSE) %>%
bb_labs(caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)")
Date
(and a subchart)library(billboarder)
# data
data("equilibre_mensuel")
# line chart
billboarder() %>%
bb_linechart(
data = equilibre_mensuel[, c("date", "consommation", "production")],
type = "spline"
) %>%
bb_x_axis(tick = list(format = "%Y-%m", fit = FALSE)) %>%
bb_x_grid(show = TRUE) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual("consommation" = "firebrick", "production" = "forestgreen") %>%
bb_legend(position = "right") %>%
bb_subchart(show = TRUE, size = list(height = 30)) %>%
bb_labs(
title = "Monthly electricity consumption and production in France (2007 - 2017)",
y = "In megawatt (MW)",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
billboarder() %>%
bb_linechart(
data = equilibre_mensuel[, c("date", "consommation", "production")],
type = "spline"
) %>%
bb_x_axis(tick = list(format = "%Y-%m", fit = FALSE)) %>%
bb_x_grid(show = TRUE) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual("consommation" = "firebrick", "production" = "forestgreen") %>%
bb_legend(position = "right") %>%
bb_zoom(
enabled = TRUE,
type = "drag",
resetButton = list(text = "Unzoom")
) %>%
bb_labs(
title = "Monthly electricity consumption and production in France (2007 - 2017)",
y = "In megawatt (MW)",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
POSIXct
(and regions)library(billboarder)
# data
data("cdc_prod_filiere")
# Retrieve sunrise and and sunset data with `suncalc`
# library("suncalc")
# sun <- getSunlightTimes(date = as.Date("2017-06-12"), lat = 48.86, lon = 2.34, tz = "CET")
sun <- data.frame(
sunrise = as.POSIXct("2017-06-12 05:48:14"),
sunset = as.POSIXct("2017-06-12 21:55:32")
)
# line chart
billboarder() %>%
bb_linechart(
data = cdc_prod_filiere,
mapping = aes(date_heure, prod_solaire)
) %>%
bb_x_axis(tick = list(format = "%H:%M", fit = FALSE)) %>%
bb_y_axis(min = 0, padding = 0) %>%
bb_regions(
list(
start = as.numeric(cdc_prod_filiere$date_heure[1]) * 1000,
end = as.numeric(sun$sunrise)*1000
),
list(
start = as.numeric(sun$sunset) * 1000,
end = as.numeric(cdc_prod_filiere$date_heure[48]) * 1000
)
) %>%
bb_x_grid(
lines = list(
list(value = as.numeric(sun$sunrise)*1000, text = "sunrise"),
list(value = as.numeric(sun$sunset)*1000, text = "sunset")
)
) %>%
bb_labs(
title = "Solar production (2017-06-12)",
y = "In megawatt (MW)",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
library(billboarder)
# data
data("cdc_prod_filiere")
billboarder() %>%
bb_linechart(
data = cdc_prod_filiere[, c("date_heure", "prod_eolien", "prod_hydraulique", "prod_solaire")],
type = "area"
) %>%
bb_data(
groups = list(list("prod_eolien", "prod_hydraulique", "prod_solaire")),
names = list("prod_eolien" = "Wind", "prod_hydraulique" = "Hydraulic", "prod_solaire" = "Solar")
) %>%
bb_legend(position = "inset", inset = list(anchor = "top-right")) %>%
bb_colors_manual(
"prod_eolien" = "#238443", "prod_hydraulique" = "#225EA8", "prod_solaire" = "#FEB24C",
opacity = 0.8
) %>%
bb_y_axis(min = 0, padding = 0) %>%
bb_labs(
title = "Renewable energy production (2017-06-12)",
y = "In megawatt (MW)",
caption = "Data source: RTE (https://opendata.reseaux-energies.fr/)"
)
Use RStudio >= 1.2.0 to display in viewer.
# Generate data
dat <- data.frame(
date = seq.Date(Sys.Date(), length.out = 20, by = "day"),
y1 = round(rnorm(20, 100, 15)),
y2 = round(rnorm(20, 100, 15))
)
dat$ymin1 <- dat$y1 - 5
dat$ymax1 <- dat$y1 + 5
dat$ymin2 <- dat$y2 - sample(3:15, 20, TRUE)
dat$ymax2 <- dat$y2 + sample(3:15, 20, TRUE)
# Make chart : use ymin & ymax aes for range
billboarder(data = dat) %>%
bb_linechart(
mapping = aes(x = date, y = y1, ymin = ymin1, ymax = ymax1),
type = "area-line-range"
) %>%
bb_linechart(
mapping = aes(x = date, y = y2, ymin = ymin2, ymax = ymax2),
type = "area-spline-range"
) %>%
bb_y_axis(min = 50)
Create histograms with a numeric vector (or data.frame
)
:
With a grouping variable :
# Generate some data
dat <- data.frame(
sample = c(rnorm(n = 1e4, mean = 1), rnorm(n = 1e4, mean = 2)),
group = rep(c("A", "B"), each = 1e4), stringsAsFactors = FALSE
)
# Mean by groups
samples_mean <- tapply(dat$sample, dat$group, mean)
# histogram !
billboarder() %>%
bb_histogram(data = dat, x = "sample", group = "group", binwidth = 0.25) %>%
bb_x_grid(
lines = list(
list(value = unname(samples_mean['A']), text = "mean of sample A"),
list(value = unname(samples_mean['B']), text = "mean of sample B")
)
)
Density plot with the same data :
With single serie:
Multiple series and with data in long format:
Gauge can be created with:
or with function bauge()
which had special output and
render function in shiny:
Multiple values gauge are also possible:
Create a treemap chart with:
data("mpg", package = "ggplot2")
billboarder() %>%
bb_treemapchart(
data = table(manufacturer = mpg$manufacturer),
mapping = aes(x = manufacturer, y = Freq),
label = list(show = TRUE, threshold = 0.03),
tile = "binary" # or "slice" or "dice"
) %>%
bb_data(
labels = list(colors = "#FFF")
) %>%
bb_color(
palette = colorRampPalette(c("#08519C", "#9ECAE1"))(15) #15 = n manufacturer
)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.