TLG Catalog - Stable
  • Stable
    • Dev
  1. Graphs
  2. Other
  3. LTG01
  • Introduction

  • Tables
    • ADA
      • ADAT01
      • ADAT02
      • ADAT03
      • ADAT04A
      • ADAT04B
    • Adverse Events
      • AET01
      • AET01_AESI
      • AET02
      • AET02_SMQ
      • AET03
      • AET04
      • AET04_PI
      • AET05
      • AET05_ALL
      • AET06
      • AET06_SMQ
      • AET07
      • AET09
      • AET09_SMQ
      • AET10
    • Concomitant Medications
      • CMT01
      • CMT01A
      • CMT01B
      • CMT02_PT
    • Deaths
      • DTHT01
    • Demography
      • DMT01
    • Disclosures
      • DISCLOSUREST01
      • EUDRAT01
      • EUDRAT02
    • Disposition
      • DST01
      • PDT01
      • PDT02
    • ECG
      • EGT01
      • EGT02
      • EGT03
      • EGT04
      • EGT05_QTCAT
    • Efficacy
      • AOVT01
      • AOVT02
      • AOVT03
      • CFBT01
      • CMHT01
      • COXT01
      • COXT02
      • DORT01
      • LGRT02
      • MMRMT01
      • ONCT05
      • RATET01
      • RBMIT01
      • RSPT01
      • TTET01
    • Exposure
      • EXT01
    • Lab Results
      • LBT01
      • LBT02
      • LBT03
      • LBT04
      • LBT05
      • LBT06
      • LBT07
      • LBT08
      • LBT09
      • LBT10
      • LBT10_BL
      • LBT11
      • LBT11_BL
      • LBT12
      • LBT12_BL
      • LBT13
      • LBT14
      • LBT15
    • Medical History
      • MHT01
    • Pharmacokinetic
      • PKCT01
      • PKPT02
      • PKPT03
      • PKPT04
      • PKPT05
      • PKPT06
      • PKPT07
      • PKPT08
      • PKPT11
    • Risk Management Plan
      • RMPT01
      • RMPT03
      • RMPT04
      • RMPT05
      • RMPT06
    • Safety
      • ENTXX
    • Vital Signs
      • VST01
      • VST02
  • Listings
    • ADA
      • ADAL02
    • Adverse Events
      • AEL01
      • AEL01_NOLLT
      • AEL02
      • AEL02_ED
      • AEL03
      • AEL04
    • Concomitant Medications
      • CML01
      • CML02A_GL
      • CML02B_GL
    • Development Safety Update Report
      • DSUR4
    • Disposition
      • DSL01
      • DSL02
    • ECG
      • EGL01
    • Efficacy
      • ONCL01
    • Exposure
      • EXL01
    • Lab Results
      • LBL01
      • LBL01_RLS
      • LBL02A
      • LBL02A_RLS
      • LBL02B
    • Medical History
      • MHL01
    • Pharmacokinetic
      • ADAL01
      • PKCL01
      • PKCL02
      • PKPL01
      • PKPL02
      • PKPL04
    • Vital Signs
      • VSL01
  • Graphs
    • Efficacy
      • FSTG01
      • FSTG02
      • KMG01
      • MMRMG01
      • MMRMG02
    • Other
      • BRG01
      • BWG01
      • CIG01
      • IPPG01
      • LTG01
      • MNG01
    • Pharmacokinetic
      • PKCG01
      • PKCG02
      • PKCG03
      • PKPG01
      • PKPG02
      • PKPG03
      • PKPG04
      • PKPG06

  • Appendix
    • Reproducibility

  • Index

On this page

  • Output
  • Reproducibility
    • Timestamp
    • Session Info
    • .lock file
  • Edit this page
  • Report an issue
  1. Graphs
  2. Other
  3. LTG01

LTG01

Lattice Plot of Laboratory Tests by Treatment Group Over Time


Lattice plots are natively handled by R, the examples below rely mostly on the package ggplot2.

Output

  • Plot of Liver Function Tests
  • Plot of Liver Function Tests
    Including Mean, Median, and 95% CIs
  • Data Setup

Basic Plot

  • Preview
  • Try this using WebR
Code
# General mapping and "lattice" ("facet" in ggplot2 nomenclature).
g1 <- {
  ggplot(
    data = adlb,
    mapping = aes(x = AVISIT, y = AVAL, colour = SUBJID, shape = SUBJID)
  ) +
    facet_grid(LBTESTCD ~ ARM, scales = "free_y") +
    scale_shape_manual(values = pch)
}

# Add points and lines.
g1 <- g1 + geom_point()
g1 <- g1 + geom_line()
plot <- g1
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

Modifying Facets

  • Preview
  • Try this using WebR

The units describing rows of panes and the number of patients under each arm is specified by modifying facet_grid():

Code
# Include the units and the sample size N.
g2 <- g1 + facet_grid(
  paste0(LBTESTCD, "\n(", AVALU, ")") ~ ARM_N,
  scales = "free_y"
)

plot <- g2
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

Modifying X-Axis

  • Preview
  • Try this using WebR

The graphic elements are modified through usual ggplot2 functions. For instance, the x-axis could be improved as follows:

Code
g3 <- g2 + theme(
  axis.text.x = element_text(angle = 45, hjust = 1),
  axis.title = element_blank()
) + scale_x_continuous(breaks = adlb$AVISIT, labels = adlb$AVISIT_txt)

plot <- g3
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

The functions stat_mean_ci and stat_median_ci from the tern package allow the addition of mean and/or median confidence intervals. The example below suggests a larger dataset, where the individual subject legend may not be relevant but the mean or the median are of special interest.

Pre-Processing

Code
# Datasets
adsl <- random.cdisc.data::cadsl %>% slice(1:40)
adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID)

# Pre-processing
adlb$AVISIT_txt <- adlb$AVISIT
adlb$AVISIT <- as.numeric(adlb$AVISIT)
adlb$ARM_N <- adlb$ARM
levels(adlb$ARM_N) <- with(
  data = adlb,
  paste0(
    levels(ARM_N), " (N = ",
    tapply(SUBJID, ARM_N, function(x) length(unique(x))), ")"
  )
)

# Plot utils
npch <- 1:25
npatients <- length(unique(adlb$SUBJID))
pch <- c(
  rep(npch, times = npatients %/% length(npch)),
  npch[1:(npatients %% length(npch))]
)

Basic Plot

  • Preview
  • Try this using WebR
Code
# General mapping and "lattice" ("facet" in ggplot2 nomenclature)
g4 <- {
  ggplot(
    data = adlb,
    mapping = aes(x = AVISIT, y = AVAL, colour = SUBJID, shape = SUBJID)
  ) +
    facet_grid(LBTESTCD ~ ARM_N, scales = "free_y") +
    scale_shape_manual(values = pch) +
    scale_color_manual(values = rep(getOption("ggplot2.discrete.colour"), 2))
}

# Add points and lines.
# Note that with so many patients, legend might not be useful and transparency
#   is advisable.
g4 <- g4 + geom_point(alpha = .3)
g4 <- g4 + geom_line(alpha = .3)
g4 <- g4 + guides(colour = "none", shape = "none")
g4 <- g4 + theme(
  axis.text.x = element_text(angle = 45, hjust = 1),
  axis.title  = element_blank()
)
g4 <- g4 + scale_x_continuous(breaks = adlb$AVISIT, labels = adlb$AVISIT_txt)
plot <- g4
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

Adding Mean

  • Preview
  • Try this using WebR
Code
# Add the mean along with the 95% CI at every visit.
g51 <- g4 + stat_summary(
  fun = mean, linewidth = 1, geom = "line",
  aes(group = 1, linetype = "Mean +/- 95% CI")
)
g51 <- g51 + stat_summary(
  fun.data = tern::stat_mean_ci, geom = "errorbar",
  aes(group = 1, linetype = "Mean +/- 95% CI")
)
plot <- g51 + guides(linetype = guide_legend(title = NULL))
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

Adding Median

  • Preview
  • Try this using WebR
Code
# Instead of a mean, the median could be more relevant.
g52 <- g51 + stat_summary(
  fun = median, linewidth = 1, geom = "line",
  aes(group = 1, linetype = "Median +/- 95% CI")
)
g52 <- g52 + stat_summary(
  fun.data = tern::stat_median_ci, geom = "errorbar",
  aes(group = 1, linetype = "Median +/- 95% CI")
)
plot <- g52 + guides(linetype = guide_legend(title = "Aggregate"))
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

Changing Confidence Level

  • Preview
  • Try this using WebR
Code
# Change the confidence level of interval for the median.
# Note: check `?stat_mean_ci()` and `?stat_median_ci()` for further fine tuning.
g53 <- g4 + stat_summary(
  fun = median, linewidth = 1, geom = "line",
  aes(group = 1, linetype = "Median +/- 80% CI")
)
g53 <- g53 + stat_summary(
  fun.data = function(x) tern::stat_median_ci(x, conf_level = 0.8),
  geom = "errorbar", aes(group = 1, linetype = "Median +/- 80% CI")
)
plot <- g53 + guides(linetype = guide_legend(title = NULL))
plot

WarningExperimental use!

WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.

Code
library(tern)
library(teal.modules.clinical)
library(ggplot2)
library(dplyr)
library(nestcolor)

# Datasets
adsl <- random.cdisc.data::cadsl %>% slice(1:8)
adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID)

# Pre-processing
adlb$AVISIT_txt <- adlb$AVISIT
adlb$AVISIT <- as.numeric(adlb$AVISIT)
adlb$ARM_N <- adlb$ARM
levels(adlb$ARM_N) <- with(
  data = adlb,
  paste0(
    levels(ARM_N), " (N = ",
    tapply(SUBJID, ARM_N, function(x) length(unique(x))), ")"
  )
)

# Plot utils
npch <- 1:25
npatients <- length(unique(adlb$SUBJID))
pch <- c(
  rep(npch, times = npatients %/% length(npch)),
  npch[1:(npatients %% length(npch))]
)

Reproducibility

Timestamp

[1] "2026-06-17 18:46:29 UTC"

Session Info

─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.5.2 (2025-10-31)
 os       Ubuntu 24.04.4 LTS
 system   x86_64, linux-gnu
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Etc/UTC
 date     2026-06-17
 pandoc   3.9 @ /usr/bin/ (via rmarkdown)
 quarto   1.9.38 @ /usr/local/bin/quarto

─ Packages ───────────────────────────────────────────────────────────────────
 package               * version   date (UTC) lib source
 backports               1.5.1     2026-04-03 [1] CRAN (R 4.5.2)
 brio                    1.1.5     2024-04-24 [1] CRAN (R 4.5.2)
 broom                   1.0.13    2026-05-14 [1] CRAN (R 4.5.2)
 bsicons                 0.1.2     2023-11-04 [1] CRAN (R 4.5.2)
 checkmate               2.3.4     2026-02-03 [1] CRAN (R 4.5.2)
 cli                     3.6.6     2026-04-09 [1] CRAN (R 4.5.2)
 codetools               0.2-20    2024-03-31 [2] CRAN (R 4.5.2)
 curl                    7.1.0     2026-04-22 [1] CRAN (R 4.5.2)
 dichromat               2.0-0.1   2022-05-02 [1] CRAN (R 4.5.2)
 digest                  0.6.39    2025-11-19 [1] CRAN (R 4.5.2)
 dplyr                 * 1.2.1     2026-04-03 [1] CRAN (R 4.5.2)
 evaluate                1.0.5     2025-08-27 [1] CRAN (R 4.5.2)
 farver                  2.1.2     2024-05-13 [1] CRAN (R 4.5.2)
 fastmap                 1.2.0     2024-05-15 [1] CRAN (R 4.5.2)
 formatR                 1.14      2023-01-17 [1] CRAN (R 4.5.2)
 formatters            * 0.5.12    2025-12-08 [1] CRAN (R 4.5.2)
 generics                0.1.4     2025-05-09 [1] CRAN (R 4.5.2)
 ggplot2               * 4.0.3     2026-04-22 [1] CRAN (R 4.5.2)
 glue                    1.8.1     2026-04-17 [1] CRAN (R 4.5.2)
 gtable                  0.3.6     2024-10-25 [1] CRAN (R 4.5.2)
 htmltools               0.5.9     2025-12-04 [1] CRAN (R 4.5.2)
 htmlwidgets             1.6.4     2023-12-06 [1] CRAN (R 4.5.2)
 httpuv                  1.6.17    2026-03-18 [1] CRAN (R 4.5.2)
 jsonlite                2.0.0     2025-03-27 [1] CRAN (R 4.5.2)
 knitr                   1.51      2025-12-20 [1] CRAN (R 4.5.2)
 labeling                0.4.3     2023-08-29 [1] CRAN (R 4.5.2)
 later                   1.4.8     2026-03-05 [1] CRAN (R 4.5.2)
 lattice                 0.22-9    2026-02-09 [2] CRAN (R 4.5.2)
 lifecycle               1.0.5     2026-01-08 [1] CRAN (R 4.5.2)
 logger                  0.4.2     2026-05-10 [1] CRAN (R 4.5.2)
 magrittr              * 2.0.5     2026-04-04 [1] CRAN (R 4.5.2)
 Matrix                  1.7-5     2026-03-21 [1] CRAN (R 4.5.2)
 mime                    0.13      2025-03-17 [1] CRAN (R 4.5.2)
 nestcolor             * 0.1.3     2025-01-21 [1] CRAN (R 4.5.2)
 otel                    0.2.0     2025-08-29 [1] CRAN (R 4.5.2)
 pillar                  1.11.1    2025-09-17 [1] CRAN (R 4.5.2)
 pkgcache                2.2.5     2026-04-09 [1] CRAN (R 4.5.2)
 pkgconfig               2.0.3     2019-09-22 [1] CRAN (R 4.5.2)
 processx                3.9.0     2026-04-22 [1] CRAN (R 4.5.2)
 promises                1.5.0     2025-11-01 [1] CRAN (R 4.5.2)
 ps                      1.9.3     2026-04-20 [1] CRAN (R 4.5.2)
 purrr                   1.2.2     2026-04-10 [1] CRAN (R 4.5.2)
 R6                      2.6.1     2025-02-15 [1] CRAN (R 4.5.2)
 random.cdisc.data       0.3.16    2024-10-10 [1] CRAN (R 4.5.2)
 rbibutils               2.4.1     2026-01-21 [1] CRAN (R 4.5.2)
 RColorBrewer            1.1-3     2022-04-03 [1] CRAN (R 4.5.2)
 Rcpp                    1.1.1-1.1 2026-04-24 [1] CRAN (R 4.5.2)
 Rdpack                  2.6.6     2026-02-08 [1] CRAN (R 4.5.2)
 rlang                   1.2.0     2026-04-06 [1] CRAN (R 4.5.2)
 rmarkdown               2.31      2026-03-26 [1] CRAN (R 4.5.2)
 rtables               * 0.6.16    2026-04-22 [1] CRAN (R 4.5.2)
 S7                      0.2.2     2026-04-22 [1] CRAN (R 4.5.2)
 scales                  1.4.0     2025-04-24 [1] CRAN (R 4.5.2)
 sessioninfo             1.2.4     2026-06-04 [1] CRAN (R 4.5.2)
 shiny                 * 1.13.0    2026-02-20 [1] CRAN (R 4.5.2)
 stringi                 1.8.7     2025-03-27 [1] CRAN (R 4.5.2)
 stringr                 1.6.0     2025-11-04 [1] CRAN (R 4.5.2)
 survival                3.8-6     2026-01-16 [2] CRAN (R 4.5.2)
 teal                  * 1.1.0     2025-11-17 [1] CRAN (R 4.5.2)
 teal.code             * 0.7.1     2026-01-20 [1] CRAN (R 4.5.2)
 teal.data             * 0.8.0     2025-08-19 [1] CRAN (R 4.5.2)
 teal.logger             0.4.1     2025-12-02 [1] CRAN (R 4.5.2)
 teal.modules.clinical * 0.12.0    2025-12-04 [1] CRAN (R 4.5.2)
 teal.reporter           0.6.1     2026-02-20 [1] CRAN (R 4.5.2)
 teal.slice            * 0.8.0     2026-06-04 [1] CRAN (R 4.5.2)
 teal.transform        * 0.7.1     2025-12-03 [1] CRAN (R 4.5.2)
 tern                  * 0.9.10    2025-12-18 [1] CRAN (R 4.5.2)
 testthat                3.3.2     2026-01-11 [1] CRAN (R 4.5.2)
 tibble                  3.3.1     2026-01-11 [1] CRAN (R 4.5.2)
 tidyr                   1.3.2     2025-12-19 [1] CRAN (R 4.5.2)
 tidyselect              1.2.1     2024-03-11 [1] CRAN (R 4.5.2)
 vctrs                   0.7.3     2026-04-11 [1] CRAN (R 4.5.2)
 withr                   3.0.2     2024-10-28 [1] CRAN (R 4.5.2)
 xfun                    0.58      2026-06-01 [1] CRAN (R 4.5.2)
 xtable                  1.8-8     2026-02-22 [1] CRAN (R 4.5.2)
 yaml                    2.3.12    2025-12-10 [1] CRAN (R 4.5.2)

 [1] /usr/local/lib/R/site-library
 [2] /usr/local/lib/R/library
 [3] /github/home/R/x86_64-pc-linux-gnu-library/4.5
 * ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────

.lock file

Download the .lock file and use renv::restore() on it to recreate environment used to generate this website.

Download

IPPG01
MNG01
Source Code
---
title: LTG01
subtitle: Lattice Plot of Laboratory Tests by Treatment Group Over Time
---

------------------------------------------------------------------------

{{< include ../../_utils/envir_hook.qmd >}}

Lattice plots are natively handled by R, the examples below rely mostly on the package `ggplot2`.

```{r setup, echo = FALSE, warning = FALSE, message = FALSE}
library(tern)
library(teal.modules.clinical)
library(ggplot2)
library(dplyr)
library(nestcolor)

# Datasets
adsl <- random.cdisc.data::cadsl %>% slice(1:8)
adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID)

# Pre-processing
adlb$AVISIT_txt <- adlb$AVISIT
adlb$AVISIT <- as.numeric(adlb$AVISIT)
adlb$ARM_N <- adlb$ARM
levels(adlb$ARM_N) <- with(
  data = adlb,
  paste0(
    levels(ARM_N), " (N = ",
    tapply(SUBJID, ARM_N, function(x) length(unique(x))), ")"
  )
)

# Plot utils
npch <- 1:25
npatients <- length(unique(adlb$SUBJID))
pch <- c(
  rep(npch, times = npatients %/% length(npch)),
  npch[1:(npatients %% length(npch))]
)
```

```{r include = FALSE}
webr_code_labels <- c("setup")
```

{{< include ../../_utils/webr_no_include.qmd >}}

## Output

:::::::::: panel-tabset
## Plot of Liver Function Tests

#### Basic Plot

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

```{r plot1, test = list(plot_v1 = "plot")}
# General mapping and "lattice" ("facet" in ggplot2 nomenclature).
g1 <- {
  ggplot(
    data = adlb,
    mapping = aes(x = AVISIT, y = AVAL, colour = SUBJID, shape = SUBJID)
  ) +
    facet_grid(LBTESTCD ~ ARM, scales = "free_y") +
    scale_shape_manual(values = pch)
}

# Add points and lines.
g1 <- g1 + geom_point()
g1 <- g1 + geom_line()
plot <- g1
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot1")
```

{{< include ../../_utils/webr.qmd >}}
:::

#### Modifying Facets

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

The units describing rows of panes and the number of patients under each arm is specified by modifying `facet_grid()`:

```{r plot2, test = list(plot_v2 = "plot")}
# Include the units and the sample size N.
g2 <- g1 + facet_grid(
  paste0(LBTESTCD, "\n(", AVALU, ")") ~ ARM_N,
  scales = "free_y"
)

plot <- g2
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot2")
```

{{< include ../../_utils/webr.qmd >}}
:::

#### Modifying X-Axis

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

The graphic elements are modified through usual `ggplot2` functions. For instance, the x-axis could be improved as follows:

```{r plot3, test = list(plot_v3 = "g3")}
g3 <- g2 + theme(
  axis.text.x = element_text(angle = 45, hjust = 1),
  axis.title = element_blank()
) + scale_x_continuous(breaks = adlb$AVISIT, labels = adlb$AVISIT_txt)

plot <- g3
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot3")
```

{{< include ../../_utils/webr.qmd >}}
:::

## Plot of Liver Function Tests <br/> Including Mean, Median, and 95% CIs

The functions `stat_mean_ci` and `stat_median_ci` from the `tern` package allow the addition of mean and/or median confidence intervals. The example below suggests a larger dataset, where the individual subject legend may not be relevant but the mean or the median are of special interest.

#### Pre-Processing

```{r pre-processing}
#| code-fold: show

# Datasets
adsl <- random.cdisc.data::cadsl %>% slice(1:40)
adlb <- random.cdisc.data::cadlb %>% filter(USUBJID %in% adsl$USUBJID)

# Pre-processing
adlb$AVISIT_txt <- adlb$AVISIT
adlb$AVISIT <- as.numeric(adlb$AVISIT)
adlb$ARM_N <- adlb$ARM
levels(adlb$ARM_N) <- with(
  data = adlb,
  paste0(
    levels(ARM_N), " (N = ",
    tapply(SUBJID, ARM_N, function(x) length(unique(x))), ")"
  )
)

# Plot utils
npch <- 1:25
npatients <- length(unique(adlb$SUBJID))
pch <- c(
  rep(npch, times = npatients %/% length(npch)),
  npch[1:(npatients %% length(npch))]
)
```

```{r include = FALSE}
webr_code_labels <- c("pre-processing")
```

{{< include ../../_utils/webr_no_include.qmd >}}

#### Basic Plot

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

```{r plot4, test = list(plot_v4 = "plot")}
# General mapping and "lattice" ("facet" in ggplot2 nomenclature)
g4 <- {
  ggplot(
    data = adlb,
    mapping = aes(x = AVISIT, y = AVAL, colour = SUBJID, shape = SUBJID)
  ) +
    facet_grid(LBTESTCD ~ ARM_N, scales = "free_y") +
    scale_shape_manual(values = pch) +
    scale_color_manual(values = rep(getOption("ggplot2.discrete.colour"), 2))
}

# Add points and lines.
# Note that with so many patients, legend might not be useful and transparency
#   is advisable.
g4 <- g4 + geom_point(alpha = .3)
g4 <- g4 + geom_line(alpha = .3)
g4 <- g4 + guides(colour = "none", shape = "none")
g4 <- g4 + theme(
  axis.text.x = element_text(angle = 45, hjust = 1),
  axis.title  = element_blank()
)
g4 <- g4 + scale_x_continuous(breaks = adlb$AVISIT, labels = adlb$AVISIT_txt)
plot <- g4
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot4")
```

{{< include ../../_utils/webr.qmd >}}
:::

#### Adding Mean

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

```{r plot51, test = list(plot_v51 = "plot")}
# Add the mean along with the 95% CI at every visit.
g51 <- g4 + stat_summary(
  fun = mean, linewidth = 1, geom = "line",
  aes(group = 1, linetype = "Mean +/- 95% CI")
)
g51 <- g51 + stat_summary(
  fun.data = tern::stat_mean_ci, geom = "errorbar",
  aes(group = 1, linetype = "Mean +/- 95% CI")
)
plot <- g51 + guides(linetype = guide_legend(title = NULL))
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot51")
```

{{< include ../../_utils/webr.qmd >}}
:::

#### Adding Median

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

```{r plot52, test = list(plot_v52 = "plot")}
# Instead of a mean, the median could be more relevant.
g52 <- g51 + stat_summary(
  fun = median, linewidth = 1, geom = "line",
  aes(group = 1, linetype = "Median +/- 95% CI")
)
g52 <- g52 + stat_summary(
  fun.data = tern::stat_median_ci, geom = "errorbar",
  aes(group = 1, linetype = "Median +/- 95% CI")
)
plot <- g52 + guides(linetype = guide_legend(title = "Aggregate"))
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot52")
```

{{< include ../../_utils/webr.qmd >}}
:::

#### Changing Confidence Level

::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview

```{r plot53, test = list(plot_v53 = "plot")}
# Change the confidence level of interval for the median.
# Note: check `?stat_mean_ci()` and `?stat_median_ci()` for further fine tuning.
g53 <- g4 + stat_summary(
  fun = median, linewidth = 1, geom = "line",
  aes(group = 1, linetype = "Median +/- 80% CI")
)
g53 <- g53 + stat_summary(
  fun.data = function(x) tern::stat_median_ci(x, conf_level = 0.8),
  geom = "errorbar", aes(group = 1, linetype = "Median +/- 80% CI")
)
plot <- g53 + guides(linetype = guide_legend(title = NULL))
plot
```

```{r include = FALSE}
webr_code_labels <- c("plot53")
```

{{< include ../../_utils/webr.qmd >}}
:::

## Data Setup

```{r setup}
#| code-fold: show
```
::::::::::

{{< include ../../_utils/save_results.qmd >}}

{{< include ../../repro.qmd >}}

Made with ❤️ by the NEST Team

  • Edit this page
  • Report an issue
Cookie Preferences