--- title: "Joining charts" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Joining charts} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) data_barchart <- data.frame( dep = c('Services', 'Production', 'Marketing', 'Purchasing'), profit = c(12, 15, 2, -3), operational = c(9, 7, 1.5, -0.4), property = c(2, 4, 0.5, -0.6), bonus = c(1, 4, 0, -2), prev_year = c(10, 16, 4, -1), plan = c(11, 13, 2, -2.5) ) styles <- data.frame(profit = rep('actual', 4), plan = rep('plan', 4), prev_year = rep('previous',4)) ``` In this vignette we will show how to join charts in different ways. This is a useful functionality of the `tidycharts` package, as it enables the user to group charts into panels or even generate multiple charts by one command (facetting). ```{r setup, message = FALSE} library(tidycharts) ``` # Joining charts Combining plots in one panel is useful and easy by using the function `join_charts`. By setting `nrows` and `ncols` parameters user can control the layout of the grid. As you can see in [Getting Started vignette](https://mi2datalab.github.io/tidycharts/articles/Getting_Started.html#grouped-1), we created grouped bar chart and two variance bar charts. We can use the data and plots from that example to create a joined chart. ```{r barchart-join} join_charts( bar_chart_grouped(data = data_barchart, cat = data_barchart$dep, foreground = 'prev_year', background = 'profit', markers = 'plan', series_labels = c('PY', 'AC', 'PL')), bar_chart_absolute_variance(cat = data_barchart$dep, baseline = data_barchart$plan, real = data_barchart$profit, y_title = 'Plan vs. actual', y_style = 'plan'), bar_chart_relative_variance(cat = data_barchart$dep, baseline = data_barchart$plan, real = data_barchart$profit, y_title = 'Plan vs. actual', y_style = 'plan'), nrows = 1, ncols = 3) ``` # Facetting Facetting means dividing data into some categories and generating charts for each category. We will apply `facet_chart` function to visualize data from R built-in demo dataset `mtcars`. ```{r mtcars} head(mtcars) ``` We should facet the data by a variable which doesn't have many unique values (preferably a categorical variable), so we won't end up with astounding number of charts. In this case, we will facet by `cyl` variable, that has only 3 unique values, so we will get 3 charts. We need to pass `FUN` argument to `facet_chart` function, which must be one of plotting functions in the package. `FUN` is responsible for creating base charts. Arguments to `FUN` can be passed through `...`. In the example, `scatter_plot` is used. ```{r facet} facet_chart(data = mtcars, facet_by = 'cyl', ncols = 2, FUN = scatter_plot, x = mtcars$qsec, y = mtcars$hp, cat = mtcars$gear, legend_title = '', x_names = c('1/4 mile time', 'is s'), y_names = c('Horsepower', '')) ```