Facet wrap for ApexCharts

ax_facet_wrap(
  ax,
  facets,
  nrow = NULL,
  ncol = NULL,
  scales = c("fixed", "free", "free_y", "free_x"),
  labeller = label_value,
  chart_height = "300px"
)

ax_facet_grid(
  ax,
  rows = NULL,
  cols = NULL,
  scales = c("fixed", "free", "free_y", "free_x"),
  labeller = label_value,
  chart_height = "300px"
)

Arguments

ax

An apexcharts htmlwidget object.

facets

Variable(s) to use for facetting, wrapped in vars(...).

nrow, ncol

Number of row and column in output matrix.

scales

Should scales be fixed ("fixed", the default), free ("free"), or free in one dimension ("free_x", "free_y")?

labeller

A function with one argument containing for each facet the value of the faceting variable.

chart_height

Individual chart height.

rows, cols

A set of variables or expressions quoted by vars() and defining faceting groups on the rows or columns dimension.

Value

An apexcharts htmlwidget object.

Examples

### Wrap --------

if (interactive()) {
  library(apexcharter)
  
  # Scatter ----
  
  data("mpg", package = "ggplot2")
  
  # Create facets
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_wrap(vars(drv))
  
  # Change number of columns
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_wrap(vars(drv), ncol = 2)
  
  # Free axis
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_wrap(vars(drv), ncol = 2, scales = "free")
  
  # labels
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_wrap(
      vars(drv), ncol = 2,
      labeller = function(x) {
        switch(
          x,
          "f" = "front-wheel drive", 
          "r" = "rear wheel drive",
          "4" = "4wd"
        )
      }
    )
  
  # Title and subtitle are treated as global
  apex(mpg, aes(displ, cty), type = "scatter") %>%
    ax_labs(
      title = "Facet wrap example",
      subtitle = "mpg data from ggplot2"
    ) %>% 
    ax_facet_wrap(vars(drv), ncol = 2)
  
  
  # Multiple variables
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_wrap(vars(year, drv))
  
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_wrap(vars(year, drv), ncol = 2, nrow = 3)
  
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_chart(toolbar = list(show = FALSE)) %>% 
    ax_facet_wrap(
      vars(year, drv),
      labeller = function(x) {
        paste(x, collapse = " / ")
      }
    )
  
  
  
  # Lines ----
  
  data("unhcr_ts")
  refugees <- unhcr_ts %>% 
    subset(population_type == "Refugees (incl. refugee-like situations)") %>% 
    transform(date = as.Date(paste0(year, "-01-01")))
  
  
  apex(refugees, aes(date, n), type = "line") %>% 
    ax_yaxis(tickAmount = 5) %>% 
    ax_facet_wrap(vars(continent_origin))
  
  
  
  # Free y-axis and synchronize
  apex(refugees, aes(date, n), type = "line", synchronize = "my-id") %>% 
    ax_yaxis(tickAmount = 5) %>% 
    ax_xaxis(tooltip = list(enabled = FALSE)) %>% 
    ax_tooltip(x = list(format = "yyyy")) %>% 
    ax_facet_wrap(vars(continent_origin), scales = "free_y")
  
  
  
  # Bars ----
  
  data("unhcr_ts")
  refugees <- unhcr_ts %>% 
    subset(year == 2017)
  
  apex(refugees, aes(continent_origin, n), type = "column") %>% 
    ax_yaxis(
      labels = list(
        formatter = format_num("~s")
      ),
      tickAmount = 5
    ) %>% 
    ax_facet_wrap(vars(population_type), ncol = 2)
  
}

### Grid --------
if (interactive()) {
  library(apexcharter)
  
  # Scatter ----
  
  data("mpg", package = "ggplot2")
  
  # Only rows
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_grid(rows = vars(drv), chart_height = "200px")
  
  # Only cols
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_grid(cols = vars(year))
  
  # Rows and Cols
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_grid(rows = vars(drv), cols = vars(year))
  
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_chart(toolbar = list(show = FALSE)) %>% 
    ax_facet_grid(vars(drv), vars(cyl))
  
  
  # Labels
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_facet_grid(
      vars(drv),
      labeller = function(x) {
        switch(
          x,
          "f" = "front-wheel drive", 
          "r" = "rear wheel drive",
          "4" = "4wd"
        )
      }
    )
  
  
  # Title and subtitle are treated as global
  apex(mpg, aes(displ, cty), type = "scatter") %>% 
    ax_labs(
      title = "Facet grid example",
      subtitle = "mpg data from ggplot2"
    ) %>% 
    ax_facet_grid(rows = vars(drv), cols = vars(year))
  
}