Create grid of charts with ApexCharts, currently it’s possible to:
Current limitations are :
apexfacetOutput()
and renderApexfacet()
)Create a grid of charts according to a variable of the data with ax_facet_wrap()
:
library(apexcharter)
data("mpg", package = "ggplot2")
apex(mpg, aes(displ, cty), type = "scatter") %>%
ax_xaxis(labels = list(formatter = format_num(".0f"))) %>%
ax_labs(
title = "Facet wrap example",
subtitle = "mpg data from ggplot2",
x = "engine displacement, in litres",
y = "city miles per gallon"
) %>%
ax_facet_wrap(vars(drv), ncol = 2)
Synchronized line charts with free y-axis :
library(apexcharter)
data("economics_long", package = "ggplot2")
apex(economics_long, aes(date, value), type = "line", synchronize = "sync-it") %>%
ax_yaxis(
decimalsInFloat = 0,
labels = list(
formatter = format_num("~s"),
minWidth = 40
)
) %>%
ax_tooltip(x = list(format = "yyyy")) %>%
ax_facet_wrap(vars(variable), scales = "free_y")
Don’t forget to set a minWidth
for y axis labels when synchronizing charts, otherwise unexpected results can occurs.
Create a matrix of charts defined by row and column faceting variables with ax_facet_grid()
:
library(apexcharter)
data("mpg", package = "ggplot2")
apex(mpg, aes(displ, cty), type = "scatter") %>%
ax_xaxis(labels = list(formatter = format_num(".0f"))) %>%
ax_labs(
title = "Facet grid example",
subtitle = "mpg data from ggplot2",
x = "engine displacement, in litres",
y = "city miles per gallon"
) %>%
ax_facet_grid(rows = vars(drv), cols = vars(year))
You can construct a grid of (unrelated) charts with apex_grid()
, construct your charts independently then assemble them in the grid:
library(apexcharter)
data("mpg", package = "ggplot2")
# Construct 3 charts
a1 <- apex(mpg, aes(manufacturer), type = "bar")
a2 <- apex(mpg, aes(trans), type = "column")
a3 <- apex(mpg, aes(drv), type = "pie")
# Assemble them in a grid
apex_grid(
a1, a2, a3,
grid_area = c("1 / 1 / 3 / 2", "1 / 2 / 2 / 4", "2 / 2 / 3 / 4"),
ncol = 3,
nrow = 2,
height = "600px"
)
grid_area
argument allow to specify space occupied by each chart, you can generate interactively your grid template here.