---
title: "Introduction to 'parallelPlot'"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Introduction to 'parallelPlot'}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7
)
```
```{r setup}
library(parallelPlot)
```
## Basic usage (dataset uses `factor` type)
```{r}
parallelPlot(iris)
```
'species' column is of factor type and has box representation for its categories.
## `refColumnDim` argument (referenced column is categorical)
```{r}
parallelPlot(iris, refColumnDim = "Species")
```
Each trace has a color depending of its 'species' value.
## `categoricalCS` argument
```{r}
parallelPlot(iris, refColumnDim = "Species", categoricalCS = "Set1")
```
Colors used for categories are not the same as previously
(supported values: `Category10`, `Accent`, `Dark2`, `Paired`, `Set1`).
## `refColumnDim` argument (referenced column is continuous)
```{r}
parallelPlot(iris, refColumnDim = "Sepal.Length")
```
Each trace has a color depending of its 'Sepal.Length' value.
## `continuousCS` argument
```{r}
parallelPlot(iris, refColumnDim = "Sepal.Length", continuousCS = "YlOrRd")
```
Colors used for lines are not the same as previously. Supported values: `Viridis`, `Inferno`, `Magma`, `Plasma`, `Warm`, `Cool`, `Rainbow`, `CubehelixDefault`, `Blues`, `Greens`, `Greys`, `Oranges`, `Purples`, `Reds`, `BuGn`, `BuPu`, `GnBu`, `OrRd`, `PuBuGn`, `PuBu`, `PuRd`, `RdBu`, `RdPu`, `YlGnBu`, `YlGn`, `YlOrBr`, `YlOrRd`
## Basic usage (dataset doesn't use `factor` type)
```{r}
parallelPlot(mtcars)
```
Several columns are of numerical type but should be of factor type (for example `cyl`).
## `categorical` argument
```{r}
categorical <- list(cyl = c(4, 6, 8), vs = c(0, 1), am = c(0, 1), gear = 3:5, carb = 1:8)
parallelPlot(mtcars, categorical = categorical, refColumnDim = "cyl")
```
`cyl` and four last columns have a box representation for categories.
## `categoriesRep` argument
```{r}
categorical <- list(cyl = c(4, 6, 8), vs = c(0, 1), am = c(0, 1), gear = 3:5, carb = 1:8)
parallelPlot(
mtcars,
categorical = categorical,
refColumnDim = "cyl",
categoriesRep = "EquallySizedBoxes"
)
```
Within a category column, the height assigned to each category can either be equal for each category (`EquallySizedBoxes`) or calculated to reflect the proportion of lines passing through each category (`EquallySpacedLines`).
## `arrangeMethod` argument
```{r}
categorical <- list(cyl = c(4, 6, 8), vs = c(0, 1), am = c(0, 1), gear = 3:5, carb = 1:8)
parallelPlot(
mtcars,
categorical = categorical,
refColumnDim = "cyl",
arrangeMethod = "fromLeft"
)
```
Within a category box, the position of lines is computed to minimize crossings on the left of the box. `arrangeMethod` can also be set to `fromRight` to minimize crossings on the left of the box (default behavior). `fromBoth` allows to merge the two behaviors (see next example). To turn this ordering off (for example for performance reasons), `arrangeMethod` can also be set to `fromNone`.
## `arrangeMethod` argument (using `fromBoth`)
```{r}
categorical <- list(cyl = c(4, 6, 8), vs = c(0, 1), am = c(0, 1), gear = 3:5, carb = 1:8)
parallelPlot(
mtcars,
categorical = categorical,
refColumnDim = "cyl",
arrangeMethod = "fromBoth"
)
```
Within a category box, lines have an incoming point and an outgoing point; these points are ordered to minimize crossings on the left and on the right of the box.
## `inputColumns` argument
```{r}
categorical <- list(cyl = c(4, 6, 8), vs = c(0, 1), am = c(0, 1), gear = 3:5, carb = 1:8)
inputColumns <- c("mpg", "disp", "drat", "qsec", "am", "gear", "carb")
parallelPlot(
mtcars,
categorical = categorical,
inputColumns = inputColumns,
refColumnDim = "cyl"
)
```
The column name is blue for outputs and green for inputs (in shiny mode, inputs can be edited).
## `histoVisibility` argument
```{r}
histoVisibility <- rep(TRUE, ncol(iris))
parallelPlot(iris, histoVisibility = histoVisibility)
```
An histogram is displayed for each column.
## `invertedAxes` argument
```{r}
invertedAxes <- c("Sepal.Width")
parallelPlot(iris, invertedAxes = invertedAxes)
```
Axis of second column is inverted (a sign '↓' is added at the beginning of the column header).
## `cutoffs` argument
```{r}
histoVisibility <- names(iris) # same as `rep(TRUE, ncol(iris))`
cutoffs <- list(Sepal.Length = list(c(6, 7)), Species = c("virginica", "setosa"))
parallelPlot(iris, histoVisibility = histoVisibility, cutoffs = cutoffs)
```
Lines which are not kept by cutoffs are shaded; an histogram for each column is displayed considering only kept lines.
## `refRowIndex` argument
```{r}
parallelPlot(iris, refRowIndex = 1)
```
Axes are shifted vertically in such a way that first trace of the dataset looks horizontal.
## `rotateTitle` argument
```{r}
parallelPlot(iris, refColumnDim = "Species", rotateTitle = TRUE)
```
Column names are rotated (can be useful for long column names).
## `columnLabels` argument
```{r}
columnLabels <- gsub("\\.", "
", colnames(iris))
parallelPlot(iris, refColumnDim = "Species", columnLabels = columnLabels)
```
Given names are displayed in place of column names found in dataset; `
` is used to insert line breaks.
## `cssRules` argument
```{r}
parallelPlot(iris, cssRules = list(
"svg" = "background: #C2C2C2", # Set background of plot to grey
".axisLabel" = c("fill: red", "font-size: 1.8em"), # Set title of axes red and greater
".tick text" = "font-size: 1.8em", # Set text of axes ticks greater
".plotGroup path" = "opacity: 0.25", # Make lines less opaque
".xValue" = "color: orange", # Set color for x values in tooltip
".xName" = "display: table" # Trick to have x values on a new line
))
```
Apply CSS to the plot. CSS is a simple way to describe how elements on a web page should be displayed (position, color, size, etc.).
See the page [Styling 'parallelPlot'](styling-parallelPlot.html) for more details.
## `sliderPosition` argument
```{r}
parallelPlot(iris, sliderPosition = list(
dimCount = 3, # Number of columns to show
startingDimIndex = 2 # Index of first shown column
))
```
Visible columns starts at second column and three columns are represented.
## `controlWidgets` argument
```{r}
parallelPlot(iris, refColumnDim = "Species", controlWidgets = TRUE, height = 350)
```
Widgets are added above the graph, allowing to modify some of its attributes.