---
title: "Two independent plots side by side for the same variable"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Two independent plots side by side}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---
  
```{r setup, include=FALSE}
library(rmarkdown)
library(SmartEDA)
library(knitr)
library(ISLR)
library(scales)
library(gridExtra)
library(ggplot2)

```

## SamrtEDA function to visualise two independ plots side by side for the same variable

In exploratory data analysis, it is common to want to make two different plots for same variables. For example, a survey data may have a large number of questions like age, gender, region etc. It includes several categorical and numerical features. Suppose a analyst want to see age variable distributions with gender and without gender in side by side view. There is no direct functions available in any of the statistical packages. Here is a way to achieve the same thing using R using ggplot2 customized function `ExpTwoPlots`

Function definition:
```
ExpTwoPlots(
  data,
  plot_type = "numeric",
  iv_variables = NULL,
  target = NULL,
  lp_geom_type = "boxplot",
  lp_arg_list = list(),
  rp_geom_type = "boxplot",
  rp_arg_list = list(),
  fname = NULL,
  page = NULL,
  theme = "Default"
)
```

## 1. Plot Numerical independent variables - without target variable

Different use cases

```{r}
target = "gear"
categorical_features <- c("vs", "carb") # we can add as many categorical variables
numeircal_features <- c("mpg", "qsec") # we can add as many numerical variables
```

#### 1.1 Left side Boxplot and Right side Histogram

```{r c11 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_1 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = NULL,
                     lp_arg_list = list(fill="orange"),
                     lp_geom_type = 'boxplot',
                     rp_arg_list = list(alpha=0.5, fill="white", color = "red", binwidth=1),
                     rp_geom_type = 'histogram',
                     page = c(2,1),
                     theme = "Default")
num_1
```

#### 1.2 Left side Histogram and Right side Density

```{r c12 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_2 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = NULL,
                     lp_arg_list = list(fill = "white",color = "red",  binwidth=1),
                     lp_geom_type = 'histogram',
                     rp_arg_list = list(alpha=0.5, fill="red"),
                     rp_geom_type = 'density',
                     page = c(2,1),
                     theme = "Default")
num_2
```

#### 1.3 Left side Density and Right side Boxplot

```{r c13 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_3 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = NULL,
                     lp_arg_list = list(color = "red"),
                     lp_geom_type = 'density',
                     rp_arg_list = list(fill="orange"),
                     rp_geom_type = 'boxplot',
                     page = c(2,1),
                     theme = "Default")
num_3
```

#### 1.4 Left side qqplot and Right side Boxplot

```{r c14 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_4 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = NULL,
                     lp_arg_list = list(fill = "blue"),
                     lp_geom_type = 'qqplot',
                     rp_arg_list = list(fill="orange"),
                     rp_geom_type = 'boxplot',
                     page = c(2,1),
                     theme = "Default")
num_4
```


## 2. Plot Numerical independent variables - with target variable

#### 2.1 Left side Boxplot and Right side Histogram

```{r c21 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_21 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = "gear",
                     lp_arg_list = list(fill="pink"),
                     lp_geom_type = 'boxplot',
                     rp_arg_list = list(alpha=0.5, fill = c("grey", "orange", "lightblue"), binwidth=1),
                     rp_geom_type = 'histogram',
                     page = c(2,1),
                     theme = "Default")
num_21
```

#### 2.2 Left side Histogram and Right side Density
```{r c22 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_22 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = "gear",
                     lp_arg_list = list(fill = "white",color = "red",  binwidth=1),
                     lp_geom_type = 'histogram',
                     rp_arg_list = list(alpha=0.5, fill = c("red", "orange", "pink")),
                     rp_geom_type = 'density',
                     page = c(2,1),
                     theme = "Default")
num_22
```

#### 2.3 Left side Density and Right side Boxplot

```{r c23 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_23 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = "gear",
                     lp_arg_list = list(fill = "grey"),
                     lp_geom_type = 'density',
                     rp_arg_list = list(fill = c("blue", "orange", "pink"), alpha=0.5),
                     rp_geom_type = 'boxplot',
                     page = c(2,1),
                     theme = "Default")
num_23
```

#### 2.4 Left side qqplot and Right side Density

```{r c24 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_24 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = "gear",
                     lp_arg_list = list(fill = "grey"),
                     lp_geom_type = 'qqplot',
                     rp_arg_list = list(fill = c("blue", "orange", "pink"), alpha=0.5),
                     rp_geom_type = 'density',
                     page = c(2,1),
                     theme = "Default")
num_24
```

#### 2.5 Left side Boxplot and Right side qqplot

```{r c25 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
num_25 <- ExpTwoPlots(mtcars, 
                     plot_type = "numeric",
                     iv_variables = numeircal_features,
                     target = "gear",
                     lp_arg_list = list(fill = "orange"),
                     lp_geom_type = 'boxplot',
                     rp_arg_list = list(fill = c("blue", "green", "red"), alpha=0.5),
                     rp_geom_type = 'qqplot',
                     page = c(2,1),
                     theme = "Default")
num_25
```


## 3. Plot categorical independent variables - without target variable

#### 3.1 Left side donut chart and Right side bar chart

```{r c31 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
cat_1 <- ExpTwoPlots(mtcars, 
                     plot_type = "categorical",
                     iv_variables = categorical_features,
                     target = NULL,
                     lp_arg_list = list(),
                     lp_geom_type = 'donut',
                     rp_arg_list = list(stat = 'identity'),
                     rp_geom_type = 'bar',
                     page = c(2,1),
                     theme = "Default")
cat_1
```

#### 3.2 Left side donut chart and Right side Pie chart

```{r c32 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
cat_2 <- ExpTwoPlots(mtcars, 
                     plot_type = "categorical",
                     iv_variables = categorical_features,
                     target = NULL,
                     lp_arg_list = list(),
                     lp_geom_type = 'donut',
                     rp_arg_list = list(),
                     rp_geom_type = 'pie',
                     page = c(2,1),
                     theme = "Default")
cat_2
```

#### 3.3 Left side horizontal bar chart and Right side Pie chart

```{r c33 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
cat_3 <- ExpTwoPlots(mtcars, 
                     plot_type = "categorical",
                     iv_variables = categorical_features,
                     target = NULL,
                     lp_arg_list = list(stat = 'identity'),
                     lp_geom_type = 'barh',
                     rp_arg_list = list(),
                     rp_geom_type = 'pie',
                     page = c(2,1),
                     theme = "Default")
cat_3
```

## 4. Plot categorical independent variables - with target variable

#### 4.1 Left side donut chart and Right side stacked bar chart

```{r c41 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
cat_41 <- ExpTwoPlots(mtcars, 
                     plot_type = "categorical",
                     iv_variables = categorical_features,
                     target = 'gear',
                     lp_arg_list = list(),
                     lp_geom_type = 'donut',
                     rp_arg_list = list(stat = 'identity'),
                     rp_geom_type = 'bar',
                     page = c(2,1),
                     theme = "Default")
cat_41
```

#### 4.2 Left side donut chart and Right side horizontal stacked bar chart

```{r c42 ,warning=FALSE,eval=T,include=T,fig.align='center',fig.height=7,fig.width=7}
cat_42 <- ExpTwoPlots(mtcars, 
                     plot_type = "categorical",
                     iv_variables = categorical_features,
                     target = 'gear',
                     lp_arg_list = list(),
                     lp_geom_type = 'pie',
                     rp_arg_list = list(stat = 'identity'),
                     rp_geom_type = 'barh',
                     page = c(2,1),
                     theme = "Default")
cat_42
```
