---
title: "Visualization functionalities"
author: "Laure Cougnaud"
date: "`r format(Sys.Date(), '%B %d, %Y')`"
output:
rmarkdown::html_document:
toc: true
toc_float: true
toc_depth: 5
number_sections: true
vignette: >
%\VignetteIndexEntry{Visualization functionalities}
%\VignetteEngine{knitr::rmarkdown}
\usepackage[utf8]{inputenc}
---
```{r options, echo = FALSE}
library(knitr)
opts_chunk$set(
echo = TRUE,
results = 'markup', warning = FALSE,
# stop document execution if error (not the default)
error = FALSE,
message = FALSE, cache = FALSE,
fig.width = 8, fig.height = 7,
fig.path = "./figures_vignette/",
fig.align = 'center')
options(width = 170)
# instead of warn = 0 by default
# include warnings when they occur in the document
options(warn = 1)
```
This vignette focuses on the visualization functionalities available within the
`inTextSummaryTable` package.
If you need to see figures bigger, just click on a graphic, and it will pop up
more readable.
Summary statistics can be visualized by:
1. **extracting the summary statistics table** with the
`computeSummaryStatisticsTable` function (used for `getSummaryStatistics`
function)
2. **visualizing the summary statistics via the `subjectProfileSummaryPlot`**
function
By default the **`subjectProfileSummaryPlot`** plots the mean values with
**error bars** based on standard errors.
Moreover, the `subjectProfileSummaryPlot` allows the possibility to add a table
of counts of the number of subject for a specific combination of variables.
This vignette will guide the user to
* default **visualizations for A4 and presentation documents**
* **customize palettes of colors, shape, linetypes**
* **visualization with and without table of counts and by facets**
* general customizable input
However, in order to get a full overview of the functionalities the
documentation is available in the console with `? subjectProfileSummaryPlot`.
We will first create example data sets to show how the exporting functionalities
work. The data sets used here are available in the `clinUtils` package.
# Load packages and data
```{r loadPackages}
library(inTextSummaryTable)
library(clinUtils)
library(pander)
# 'Tahoma' font should be registered upfront to create plots with: 'presentation' style
library(extrafont)
```
```{r loadData}
# load example data
data(dataADaMCDISCP01)
dataAll <- dataADaMCDISCP01
labelVars <- attr(dataAll, "labelVars")
```
# Compute summary statistics
Below we compute summary statistics for the laboratory data set.
```{r visualization-extractData}
dataLB <- subset(dataAll$ADLBC, grepl("Baseline|Week", AVISIT))
dataLB$AVISIT <- with(dataLB, reorder(trimws(AVISIT), AVISITN))
dataLB$TRTA <- with(dataLB, reorder(TRTA, TRTAN))
summaryTableDf <- computeSummaryStatisticsTable(
data = dataLB,
var = "AVAL",
rowVar = c("PARCAT1", "PARAM"),
colVar = c("TRTA", "AVISIT")
)
```
# Visualization for A4 document
The code below shows the default visualization, which plots the **mean with
standard errors** **suitable for an A4 document**, e.g. Word/pdf.
Note that the table below the plot is based on the counts for treatment and
visit variables, as specificed in the `colVar` argument of the code chuck above
for `computeSummaryStatisticsTable`.
```{r visualization-a4document}
# create the plot
dataPlot <- subset(
summaryTableDf,
!isTotal &
PARAM == "Alanine Aminotransferase (U/L)"
)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
```
# Visualization for presentation
The code below shows the default visualization **suitable for a
presentation**, either in Powerpoint or ioslides.
```{r visualization-presentation, eval = "Tahoma" %in% extrafont::fonts()}
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN",
style = "presentation"
)
```
Please note that the default font for presentation is _Tahoma_.
If you don't have this default font available,
the R package [_extrafont_](https://cran.r-project.org/package=extrafont)
might be useful to register fonts with your R graphics device.
# Palettes
The `inTextSummaryTable` uses default palettes available in the
`clinUtils` package.
However, palettes are fully customizable. Currently, there are two alternative
approaches to change the defaults:
* set the custom palettes as arguments in the `subjectProfileSummaryPlot`
via the dedicated parameters **`colorPalette`**, **`shapePalette`**,
**`linetypePalette`**
* set the **global options** into the R session.
Passing input arguments to the function might be convenient when creating one
plot.
Instead, **passing the global options is very handy when creating multiple
graphics**, so that the palettes have to be set only once at the beginning of
the R script, without the need to copy-paste input arguments in the
different visualizations.
If you want to **know more about aesthetics options of the
`inTextSummaryTable`**, there is a dedicated vignette available
[here](../doc/inTextSummaryTable-aesthetics.html)) or with
```{r getVignetteAesthetics, eval = FALSE}
vignette("inTextSummaryTable-aesthetics", "inTextSummaryTable")
```
If you want to **know more about default options from the
`clinUtils`**, you may check out the vignette of the package:
```{r getVignetteClinUtils, eval = FALSE}
vignette("clinUtils-vignette", "clinUtils")
```
Sections below show below both alternative approaches for setting the palettes.
## Custom palettes via arguments in the function
In this section we guide on how to set custom palettes via the
`subjectProfileSummaryPlot` function.
### Color palette
This section focuses on the possibility to set the `colorPalette` argument.
```{r visualization-customColorFromArgument}
# custom color palette by setting a named vector of colors
customColorPalette <- c(
`Xanomeline Low Dose` = "green",
`Xanomeline High Dose` = "red",
`Placebo` = "blue"
)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
colorPalette = customColorPalette,
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
```
### Shape and linetype palettes
This section focuses on the possibility to set the `shapePalette` and
`linetypePalette` arguments.
```{r visualization-customShapeFromArgument}
# custom shape palette
customShapePalette <- c(15, 17, 19)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
shapePalette = customShapePalette,
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
# custom linetype palette
customLinetypePalette <- c("twodash", "dotted", "longdash")
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
linetypePalette = customLinetypePalette,
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
```
## Custom palettes via setting global options
The `inTextSummaryTable` package allows the user to define global options in
the R session.
As mentioned above, setting the global options is convenient because the
palettes have to be set only once in the R script or Rmd document.
Please note that the global options have to be set **after** loading the
package. This because when loading the package, the default global options
for palettes will overwrite the custom palettes.
Here in practice:
```{r exampleLoadingPackageAndOptions, eval = FALSE}
# this is OK
library(inTextSummaryTable)
options(inTextSummaryTable.colors.plot = customColorPalette)
# this does NOT set your custom palette
options(inTextSummaryTable.colors.plot = customColorPalette)
library(inTextSummaryTable)
```
### Coloring palettes
Color palettes can be set up with the `inTextSummaryTable.colors.plot` option.
```{r visualization-customColorFromOptions}
# custom color palette by setting a simple vector of colors
customColorPalette <- c("blue", "green", "orange")
options(inTextSummaryTable.colors.plot = customColorPalette)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
# custom color palette by setting a named vector of colors
customColorPalette <- c(
`Xanomeline Low Dose` = "green",
`Xanomeline High Dose` = "red",
`Placebo` = "purple"
)
options(inTextSummaryTable.colors.plot = customColorPalette)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
```
### Shape and linetype palettes
What shown for the color palette is consistent for shape and linetypes
palettes. In this case, the global options are called
`inTextSummaryTable.shapes.plot` and `inTextSummaryTable.linetypes.plot`.
```{r visualization-customShapeFromOptions}
# custom shape palette
customShapePalette <- c(17, 19, 22)
options(inTextSummaryTable.shapes.plot = customShapePalette)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
# custom linetype palette
customLinetypePalette <- c("dotted", "longdash", "solid")
options(inTextSummaryTable.linetypes.plot = customLinetypePalette)
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
```
## Set back default palettes
There is always to possibility to switch back to the default palettes of the
package:
```{r visualization-backDefaultPalettes}
options(inTextSummaryTable.colors.plot = clinColors)
options(inTextSummaryTable.shapes.plot = clinShapes)
options(inTextSummaryTable.linetypes.plot = clinLinetypes)
```
# Visualization without count table
The user can decide to remove the table of counts by setting the parameter
**`tableText`** to `NULL`, as the code below shows.
```{r visualization-table}
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = NULL
)
```
# Visualization by facets
It is possible to directly plot multiple parameters with the **`facetVar`**
argument.
Please note that setting the `facetVar` is not compatible with adding a table
of counts underneath the plot.
```{r visualization-facets, out.width = "100%", fig.height = 9, fig.width = 9}
# create the plot
dataPlotFacets <- subset(
summaryTableDf,
!isTotal &
PARAM %in% c(
"Alanine Aminotransferase (U/L)",
"Albumin (g/L)",
"Bilirubin (umol/L)",
"Calcium (mmol/L)"
)
)
subjectProfileSummaryPlot(
data = dataPlotFacets,
xVar = "AVISIT",
colorVar = "TRTA",
labelVars = labelVars,
facetVar = c("PARCAT1", "PARAM"),
useLinetype = TRUE
)
```
# Customize your visualization
The `subjectProfileSummaryPlot` has many options! A non-exaustive demonstration
is presented below.
```{r visualization-otherInputs}
# plot the median instead of mean
# no error bars
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
meanVar = "statMedian",
seVar = NULL,
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
# plot the mean with standard deviation
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
seVar = "statSD",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
# change labels
subjectProfileSummaryPlot(
data = dataPlot,
xVar = "AVISIT",
xLab = "Time points",
yLab = "Mean and Standard Errors",
title = "Title of the plot",
colorVar = "TRTA",
labelVars = labelVars,
useLinetype = TRUE,
tableText = "statN"
)
```
# Appendix
## Session information
```{r includeSessionInfo, echo = FALSE}
pander(sessionInfo())
```