Using bivariate plot
Dawid Kałędkowski
2022-06-14
using-bivariate-plot.Rmd
Teal application to use bivariate plot with various datasets types
This vignette will guide you through 4 parts to create a teal application using various types of datasets inside an bivariate plot module:
- Load Libraries
- Create data sets
- Create an
app
variable - Run the App
Create data sets
Inside this app 5 datasets will be used
-
ADSL
A wide data set with subject data -
ADSL2
A wide data set with subject data -
ADRS
A long data set with response data for subjects at different time points of the study -
ADTTE
A long data set with time to event data -
ADLB
A long data set with lab measurements for each subject
ADSL <- synthetic_cdisc_data("latest")$adsl # nolint
ADSL2 <- synthetic_cdisc_data("latest")$adsl %>% # nolint
mutate(TRTDUR = round(as.numeric(TRTEDTM - TRTSDTM), 1))
ADRS <- synthetic_cdisc_data("latest")$adrs # nolint
ADTTE <- synthetic_cdisc_data("latest")$adtte # nolint
ADLB <- synthetic_cdisc_data("latest")$adlb %>% # nolint
mutate(CHGC = as.factor(case_when(
CHG < 1 ~ "N",
CHG > 1 ~ "P",
TRUE ~ "-"
)))
Create an app
variable
This is the most important section. We will use the teal::init
function to create an app. The data will be handed over using teal.data::cdisc_data
.
The app itself will be constructed by multiple calls of
tm_g_bivariate
using different combinations of data
sets.
app <- init(
data = cdisc_data(
cdisc_dataset("ADSL", ADSL, code = "ADSL <- synthetic_cdisc_data(\"latest\")$adsl"),
cdisc_dataset(
"ADSL2",
ADSL2,
keys = get_cdisc_keys("ADSL"),
code = "ADSL2 <- synthetic_cdisc_data(\"latest\")$adsl %>%
mutate(TRTDUR = round(as.numeric(TRTEDTM - TRTSDTM), 1))"
),
cdisc_dataset("ADRS", ADRS, code = "ADRS <- synthetic_cdisc_data(\"latest\")$adrs"),
cdisc_dataset("ADTTE", ADTTE, code = "ADTTE <- synthetic_cdisc_data(\"latest\")$adtte"),
cdisc_dataset(
"ADLB",
ADLB,
code = "ADLB <- synthetic_cdisc_data(\"latest\")$adlb %>%
mutate(CHGC = as.factor(case_when(
CHG < 1 ~ 'N',
CHG > 1 ~ 'P',
TRUE ~ '-'
)))"
),
check = TRUE
),
modules = modules(
# tm_g_bivariate ------
modules(
label = "Bivariate plot",
tm_g_bivariate(
label = "Single wide dataset",
x = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADSL),
selected = "BMRKR1",
fixed = FALSE
)
),
y = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADSL),
selected = "SEX",
multiple = FALSE,
fixed = FALSE
)
),
row_facet = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variables:",
choices = variable_choices(ADSL),
selected = NULL,
multiple = TRUE,
fixed = FALSE
)
),
col_facet = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variables:",
choices = variable_choices(ADSL),
selected = NULL,
multiple = TRUE,
fixed = FALSE
)
)
),
tm_g_bivariate(
label = "Two wide datasets",
x = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADSL, c("BMRKR1", "AGE", "SEX", "STRATA1", "RACE")),
selected = c("BMRKR1"),
multiple = FALSE
)
),
y = data_extract_spec(
dataname = "ADSL2",
select = select_spec(
label = "Select variables:",
choices = variable_choices(ADSL2, c("COUNTRY", "AGE", "RACE")),
selected = "RACE",
multiple = FALSE
)
),
row_facet = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADSL),
selected = NULL,
multiple = FALSE,
fixed = FALSE
)
),
col_facet = data_extract_spec(
dataname = "ADSL2",
select = select_spec(
label = "Select variables:",
choices = variable_choices(ADSL2),
selected = NULL,
multiple = TRUE,
fixed = FALSE
)
)
),
tm_g_bivariate(
label = "Multiple different long datasets",
x = data_extract_spec(
dataname = "ADRS",
filter = filter_spec(
label = "Select endpoints:",
vars = c("PARAMCD", "AVISIT"),
choices = value_choices(ADRS, c("PARAMCD", "AVISIT"), c("PARAM", "AVISIT")),
selected = "OVRINV - END OF INDUCTION",
multiple = TRUE
),
select = select_spec(
choices = variable_choices(ADRS, c("AVALC", "AVAL")),
selected = "AVALC",
multiple = FALSE
)
),
y = data_extract_spec(
dataname = "ADTTE",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADTTE, c("AVAL", "CNSR")),
selected = "AVAL",
multiple = FALSE,
fixed = FALSE
),
filter = filter_spec(
label = "Select endpoint:",
vars = c("PARAMCD"),
choices = value_choices(ADTTE, "PARAMCD", "PARAM"),
selected = "OS",
multiple = FALSE
)
),
row_facet = data_extract_spec(
dataname = "ADRS",
filter = filter_spec(
label = "Select endpoints:",
vars = c("PARAMCD", "AVISIT"),
choices = value_choices(ADRS, c("PARAMCD", "AVISIT"), c("PARAM", "AVISIT")),
selected = "OVRINV - SCREENING",
multiple = TRUE
),
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADRS, c("SEX", "RACE", "COUNTRY", "ARM", "PARAMCD", "AVISIT")),
selected = "SEX",
multiple = FALSE,
fixed = FALSE
)
),
col_facet = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variables:",
choices = variable_choices(ADSL, c("SEX", "RACE")),
selected = NULL,
multiple = TRUE,
fixed = FALSE
)
),
color_settings = TRUE,
color = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
fill = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
size = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("AGE", "BMRKR1")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
plot_height = c(600, 200, 2000),
ggtheme = "gray"
),
tm_g_bivariate(
label = "Wide and long datasets",
x = data_extract_spec(
dataname = "ADRS",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADRS, "PARAMCD", "PARAM"),
selected = levels(ADRS$PARAMCD)[1],
multiple = FALSE,
label = "Select response:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADRS$AVISIT),
selected = levels(ADRS$AVISIT)[1],
multiple = FALSE,
label = "Select visit:"
)
),
select = select_spec(
choices = variable_choices(ADRS, c("AVALC", "AVAL")),
selected = "AVALC",
multiple = FALSE,
label = "Select variable:"
)
),
y = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("BMRKR1", "SEX", "AGE", "RACE", "COUNTRY")),
selected = "BMRKR1",
multiple = FALSE,
label = "Select variable:",
fixed = FALSE
)
),
row_facet = data_extract_spec(
dataname = "ADRS",
select = select_spec(
choices = variable_choices(ADRS, c("SEX", "RACE", "ARMCD", "PARAMCD")),
selected = "SEX",
multiple = FALSE,
label = "Select variable:"
)
),
col_facet = data_extract_spec(
dataname = "ADRS",
select = select_spec(
choices = variable_choices(ADRS, c("SEX", "RACE", "ARMCD", "PARAMCD", "AVISIT")),
selected = "ARMCD",
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
)
),
tm_g_bivariate(
label = "Wide and multiple long datasets",
x = data_extract_spec(
dataname = "ADRS",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADRS, "PARAMCD", "PARAM"),
selected = levels(ADRS$PARAMCD)[1],
multiple = FALSE,
label = "Select response:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADRS$AVISIT),
selected = levels(ADRS$AVISIT)[1],
multiple = FALSE,
label = "Select visit:"
)
),
select = select_spec(
choices = variable_choices(ADRS, c("AVALC", "AVAL")),
selected = "AVALC",
multiple = FALSE,
label = "Select variable:"
)
),
y = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("BMRKR1", "SEX", "AGE", "RACE", "COUNTRY")),
selected = "BMRKR1",
multiple = FALSE,
fixed = FALSE
)
),
row_facet = data_extract_spec(
dataname = "ADLB",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = levels(ADLB$PARAMCD)[1],
multiple = FALSE,
label = "Select measurement:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADLB$AVISIT),
selected = levels(ADLB$AVISIT)[1],
multiple = FALSE,
label = "Select visit:"
)
),
select = select_spec(
choices = "ARMCD",
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
col_facet = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "AGE", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
color_settings = TRUE,
color = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
fill = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
size = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("AGE", "BMRKR1")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
plot_height = c(600, 200, 2000),
ggtheme = "gray"
),
tm_g_bivariate(
label = "Same long datasets (same subset)",
x = data_extract_spec(
dataname = "ADRS",
select = select_spec(
choices = variable_choices(ADRS, c("AVALC", "AVAL")),
selected = "AVALC",
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
y = data_extract_spec(
dataname = "ADRS",
select = select_spec(
choices = variable_choices(ADRS, c("SEX", "RACE", "COUNTRY", "ARMCD", "BMRKR1", "BMRKR2")),
selected = "BMRKR1",
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
row_facet = data_extract_spec(
dataname = "ADRS",
select = select_spec(
choices = variable_choices(ADRS, c("AVISIT", "PARAMCD")),
selected = "PARAMCD",
multiple = TRUE,
label = "Select variables:"
)
),
col_facet = data_extract_spec(
dataname = "ADRS",
select = select_spec(
choices = variable_choices(ADRS, c("AVISIT", "PARAMCD")),
selected = "AVISIT",
multiple = TRUE,
label = "Select variables:"
)
)
),
tm_g_bivariate(
label = "Same datasets (different subsets)",
x = data_extract_spec(
dataname = "ADLB",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = levels(ADLB$PARAMCD)[1],
multiple = FALSE,
label = "Select lab:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADLB$AVISIT),
selected = levels(ADLB$AVISIT)[1],
multiple = FALSE,
label = "Select visit:"
)
),
select = select_spec(
choices = "AVAL",
selected = "AVAL",
multiple = FALSE,
fixed = TRUE
)
),
y = data_extract_spec(
dataname = "ADLB",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = levels(ADLB$PARAMCD)[1],
multiple = FALSE,
label = "Select lab:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADLB$AVISIT),
selected = levels(ADLB$AVISIT)[1],
multiple = FALSE,
label = "Select visit:"
)
),
select = select_spec(
choices = "AVAL",
selected = "AVAL",
multiple = FALSE,
fixed = TRUE
)
),
use_density = FALSE,
row_facet = data_extract_spec(
dataname = "ADLB",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = levels(ADLB$PARAMCD)[1],
multiple = FALSE,
label = "Select lab:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADLB$AVISIT),
selected = levels(ADLB$AVISIT)[1],
multiple = FALSE,
label = "Select category:"
)
),
select = select_spec(
choices = variable_choices(ADLB, c("RACE", "SEX", "ARMCD", "ACTARMCD")),
selected = NULL,
multiple = TRUE,
fixed = FALSE,
label = "Select variable:"
)
),
col_facet = data_extract_spec(
dataname = "ADLB",
filter = list(
filter_spec(
vars = "PARAMCD",
choices = value_choices(ADLB, "PARAMCD", "PARAM"),
selected = levels(ADLB$PARAMCD)[1],
multiple = FALSE,
label = "Select lab:"
),
filter_spec(
vars = "AVISIT",
choices = levels(ADLB$AVISIT),
selected = levels(ADLB$AVISIT)[1],
multiple = FALSE,
label = "Select category:"
)
),
select = select_spec(
choices = variable_choices(ADLB, c("RACE", "SEX", "ARMCD", "ACTARMCD")),
selected = "ARMCD",
multiple = TRUE,
fixed = FALSE,
label = "Select variables:"
)
),
color_settings = TRUE,
color = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
fill = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("SEX", "RACE", "COUNTRY")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
size = data_extract_spec(
dataname = "ADSL",
select = select_spec(
choices = variable_choices(ADSL, c("AGE", "BMRKR1")),
selected = NULL,
multiple = FALSE,
fixed = FALSE,
label = "Select variable:"
)
),
plot_height = c(600, 200, 2000),
ggtheme = "gray"
)
)
)
)
Run the app
A simple shiny::shinyApp
call will let you run the app.
Note that app is only displayed when running this code inside an R
session.