| Title: | Tools for Creating Swimmers Plots using 'ggplot2' | 
| Description: | Used for creating swimmers plots with functions to customize the bars, add points, add lines, add text, and add arrows. | 
| Version: | 1.2.0 | 
| License: | GPL-3 | 
| Author: | Jessica Weiss <jessica.weiss@uhnresearch.ca>, Wei Xu<Wei.Xu@uhnresearch.ca> | 
| Maintainer: | Jessica Weiss <jessica.weiss@uhnresearch.ca> | 
| Imports: | tidyr, dplyr, ggplot2, | 
| LazyData: | true | 
| RoxygenNote: | 7.1.1 | 
| Encoding: | UTF-8 | 
| Suggests: | knitr, rmarkdown, testthat | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2021-03-28 20:15:42 UTC; jweiss | 
| Depends: | R (≥ 3.5.0) | 
| Repository: | CRAN | 
| Date/Publication: | 2021-03-31 00:00:02 UTC | 
Clinical Trial: Adverse events
Description
A dataset containing the adverse event information from a simulated clinical trial
Usage
ClinicalTrial.AE
Format
A data frame with 11 rows and 6 variables:
- id
- Patient id 
- time
- Time of an adverse event (AE) 
- event
- Type of adverse event (AE) 
- Sex
- Patient Sex 
- Age
- Age of patient at trial entry date 
- Related
- Likelihood the treatment is related to the adverse event 
Clinical Trial: Treatment
Description
A dataset containing the treatment arm information from a simulated clinical trial
Usage
ClinicalTrial.Arm
Format
A data frame with 53 rows and 6 variables:
- id
- Patient id 
- Arm
- Treatment Arm 
- End_trt
- Time since enrollment to the end of treatment, in months 
- Continued_treatment
- Continued treatment past end of follow up 
- Sex
- Patient Sex 
- Age
- Age of patient at trial entry date 
Clinical Trial: Response
Description
A dataset containing the response information from a simulated clinical trial
Usage
ClinicalTrial.Response
Format
A data frame with 36 rows and 7 variables:
- id
- Patient id 
- Response_start
- Time of starting response, in months since enrollment 
- Response_end
- Time of ending response, in months since enrollment 
- Response
- Type of response, CR = Complete response, and PR = Partial response 
- Continued_response
- Continued response past end of follow up 
- Sex
- Patient Sex 
- Age
- Age of patient at trial entry date 
Clinical Trial: Stage
Description
A dataset containing the Stage information from a simulated clinical trial
Usage
ClinicalTrial.Stage
Format
A data frame with 36 rows and 2 variables:
- id
- Patient id 
- Stage
- Patients clinical stage at enrollment of the study (either Early Stage or Late Stage) 
Formats a dataframe of line to add points
Description
This function formats a dataframe; used with swimmer_lines
Usage
line_df_to_point_df(df_lines, start = "start", end = "end", cont = NULL)
Arguments
| df_lines | a dataframe | 
| start | start column name | 
| end | end column name | 
| cont | continue column name | 
Value
a dataframe in a format for adding points to a swimmers plot
Adding arrows to a swimmers plot
Description
This function allows you to add arrows to a swimmers plot created with
swimmer_plot
Usage
swimmer_arrows(
  df_arrows,
  id = "id",
  arrow_start = "end",
  cont = NULL,
  adj.y = 0,
  name_col = NULL,
  arrow_positions = c(0.1, 1),
  angle = 30,
  length = 0.1,
  type = "closed",
  ...
)
Arguments
| df_arrows | a data frame | 
| id | column name for id, default is 'id' | 
| arrow_start | column name with the arrow locations default is "end" | 
| cont | a column name including an indicator of which ids have an arrow (NA is no arrow); when NULL will use all use all of df_arrows | 
| adj.y | amount to adjust the line within the box vertically (default is 0, line is in the centre of each bar) | 
| name_col | a column name to map the arrow colour | 
| arrow_positions | a vector of the distance from the arrow start to end, default is c(0.1,1) | 
| angle | the angle of the arrow head in degrees (smaller numbers produce narrower, pointier arrows). Essentially describes the width of the arrow head. Default is 30 | 
| length | a unit specifying the length of the arrow head (from tip to base in inches (default is 0.1)' | 
| type | one of "open" or "closed" indicating whether the arrow head should be a closed triangle. Default is 'closed' | 
| ... | additional geom_segment() arguments | 
Value
a swimmer plot with arrows
See Also
swimmer_plot swimmer_points swimmer_lines  swimmer_lines  swimmer_points_from_lines  swimmer_text
Examples
#Mapping the arrows to the bars
swim_plot <-
swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black",id_order
= 'Arm')
swim_plot_with_arrows <- swim_plot+
swimmer_arrows(df_arrows=ClinicalTrial.Arm,id='id',arrow_start='End_trt',
cont = 'Continued_treatment',name_col='Arm',show.legend = FALSE,type =
"open",cex=1.25)
 swim_plot_with_arrows+
ggplot2::scale_color_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"),drop=FALSE)+
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')
#Mapping the arrows to lines
#Start with a base swimmer plot with lines and points
swim_plot <-
swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black",id_order
= 'Arm')+ swimmer_lines(df_lines=ClinicalTrial.Response,id='id',start =
'Response_start',end='Response_end',name_col='Response',size=3)+
swimmer_points_from_lines(df_lines=ClinicalTrial.Response,id='id',start =
'Response_start',end = 'Response_end',cont =
'Continued_response',name_col='Response',size=4)
# Then add arrows to the plot
  swim_plot_with_arrows <- swim_plot+
swimmer_arrows(df_arrows=ClinicalTrial.Response,id='id',arrow_start='Response_end',
cont = 'Continued_response',name_col='Response',show.legend = FALSE,type =
"open",cex=1.25)
# Add ggplot layers to improve the plot's aesthetic
swim_plot_with_arrows+
ggplot2::scale_color_manual(name="Response",values=c("grey20","grey80"))+
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')+
ggplot2::guides(fill = ggplot2::guide_legend(override.aes = list(shape =
NA)))+
ggplot2::scale_shape_manual(name='',values=c(17,15),breaks =
c('Response_start','Response_end'),labels=c('Response Start','Response End'))
Adding lines to a swimmers plot
Description
This function allows you to add lines to a swimmers plot created with swimmer_plot
Usage
swimmer_lines(
  df_lines,
  id = "id",
  start = "start",
  end = "end",
  adj.y = 0,
  name_linetype = NULL,
  name_col = NULL,
  name_size = NULL,
  name_alpha = NULL,
  ...
)
Arguments
| df_lines | a data frame | 
| id | column name for id, default is 'id' | 
| start | column name with the line start locations | 
| end | column name with the line end locations | 
| adj.y | amount to adjust the line within the box vertically (default is 0, line is in the centre of each bar) | 
| name_linetype | a column name to map the line type | 
| name_col | a column name to map the line colour | 
| name_size | a column name to map the line size | 
| name_alpha | a column name to map the line transparency | 
| ... | additional geom_segment() arguments | 
Value
a swimmer plot with lines
See Also
swimmer_plot swimmer_points swimmer_lines  swimmer_points_from_lines swimmer_arrows swimmer_text
Examples
#Start with a base swimmer plot
swim_plot <-
swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black",id_order='Arm')
# Then add lines to the plot
swim_plot_with_lines <- swim_plot +
swimmer_lines(df_lines=ClinicalTrial.Response,id='id',start =
'Response_start',end='Response_end',name_col='Response',size=3)
# Add ggplot layers to improve the plot's aesthetic
swim_plot_with_lines +
ggplot2::scale_color_manual(name="Response",values=c("grey20","grey80"))+
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')
Creating the base of a swimmers plot
Description
This function allows you to create swimmers plots with bars, includes options to have the bars change colours and create stratified plots
Usage
swimmer_plot(
  df,
  id = "id",
  end = "end",
  start = "start",
  name_fill = NULL,
  name_col = NULL,
  name_alpha = NULL,
  increasing = TRUE,
  id_order = NULL,
  stratify = FALSE,
  base_size = 11,
  identifiers = TRUE,
  ...
)
Arguments
| df | a data frame | 
| id | column name for id, default is 'id' | 
| end | column name with the bar lengths (or bar end positions if bars change colour), default is 'end' | 
| start | column name with the bar start positions (only required when there are gaps between sections of bars, or bars which do not start at zero), default is 'start' | 
| name_fill | a column name to map the bar fill | 
| name_col | a column name to map the bar colour | 
| name_alpha | a column name to map the bar transparency | 
| increasing | Binary to specify bars in increasing order (Default is TRUE) | 
| id_order | order of the bars by id, can input a column name to sort by, or the ids in order. | 
| stratify | a list of column names to stratify by | 
| base_size | the base size for the plot, default is 11 | 
| identifiers | Binary to specify patient identifiers are included in the y axis (default is TRUE) | 
| ... | additional geom_col() arguments | 
Value
a swimmer plot with bars
See Also
swimmer_points swimmer_lines  swimmer_lines  swimmer_points_from_lines swimmer_arrows swimmer_text
Examples
swim_plot <-
swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black",id_order='Arm')
# Add ggplot layers to improve the plot's aesthetic
swim_plot +
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')
#Example with Stratification
swim_plot_stratify <- swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',
col="black",alpha=0.75,width=.8,base_size = 18,stratify= c('Age','Sex'))
swim_plot_stratify +
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')
#Example when there are gaps between the bars and bars do not start at zero
#Both a start and end time need to be specified when there are gaps between sections of bars
Gap_data <- data.frame(patient_ID=c('ID:3','ID:1','ID:1','ID:1','ID:2',
                                   'ID:2','ID:2','ID:3','ID:3','ID:2'),
                      start=c(10,1,2,7,2,10,14,5,0,22),
                      end=c(20,2,4,10,7,14,22,7,3,26),
                      treatment=c("A","B","C","A","A","C","A","B","C",NA))
swimmer_plot(df=Gap_data,id='patient_ID',name_fill="treatment",col=1,identifiers=FALSE,
id_order = c('ID:1','ID:2','ID:3')) +
ggplot2::theme_bw()+ggplot2::scale_fill_manual(name="Treatment",
values=c("A"="#e41a1c", "B"="#377eb8","C"="#4daf4a",na.value=NA),breaks=c("A","B","C"))+
 ggplot2::scale_y_continuous(breaks=c(0:26))
Adding points to a swimmers plot
Description
This function allows you to add points to a swimmers plot created with swimmer_plot
Usage
swimmer_points(
  df_points,
  id = "id",
  time = "time",
  adj.y = 0,
  name_shape = NULL,
  name_col = NULL,
  name_size = NULL,
  name_fill = NULL,
  name_stroke = NULL,
  name_alpha = NULL,
  ...
)
Arguments
| df_points | a data frame | 
| id | column name for id, default is 'id' | 
| time | column name with the point locations | 
| adj.y | amount to adjust the point within the box vertically (default is 0, point is in the centre of each bar) | 
| name_shape | a column name to map the point shape | 
| name_col | a column name to map the point colour | 
| name_size | a column name to map the point size | 
| name_fill | a column name to map the point fill | 
| name_stroke | a column name to map the point stroke | 
| name_alpha | a column name to map the point transparency | 
| ... | additional geom_point() arguments | 
Value
a swimmer plot with points
See Also
swimmer_plot swimmer_lines  swimmer_lines  swimmer_points_from_lines swimmer_arrows swimmer_text
Examples
#Start with a base swimmer plot
swim_plot <-
 swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black",id_order='Arm')
# Then add points to the plot
swim_plot_with_points <- swim_plot + swimmer_points(df_points=
ClinicalTrial.AE,id='id',time='time',name_shape =
'event',size=3,fill='white',col='black')
# Add ggplot layers to improve the plot's aesthetic
swim_plot_with_points + ggplot2::scale_shape_manual(name="Adverse
event",values=c(21,24,17),breaks=c('AE','SAE','Death'))+
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')
##Another example with the colour and shape mapped to different columns
#Start with a base swimmer plot
swim_plot <-
 swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black",id_order='Arm')
swim_plot +
 swimmer_points(df_points=ClinicalTrial.AE,id='id',time='time',name_shape =
                 'event',fill='white',name_col = 'Related',size=5)+
 ggplot2::scale_shape_manual(name="Adverse event",values=c(16,17,18),breaks=c('AE','SAE','Death'))+
 ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
 ggplot2::ylab('Time (Days)') +
 ggplot2::scale_color_manual(name="Likelihood related to treatment",values=c(1,'grey52','grey90'))
Adding points to a swimmers plot which match up with lines
Description
This function will create points at the beginning and end of line to match with  swimmer_lines.
Usage
swimmer_points_from_lines(
  df_lines,
  id = "id",
  start = "start",
  end = "end",
  cont = NULL,
  adj.y = 0,
  name_shape = "type",
  name_col = NULL,
  name_size = NULL,
  name_fill = NULL,
  name_stroke = NULL,
  name_alpha = NULL,
  ...
)
Arguments
| df_lines | a data frame | 
| id | column name for id, default is 'id' | 
| start | column name where the line starts, default is 'start' | 
| end | column name where the line ends, default is 'end' | 
| cont | a column name of which lines continue (NA is does not continue) these will not have a point at the end of the line | 
| adj.y | amount to adjust the point within the box vertically (default is 0, point is in the centre of each bar) | 
| name_shape | a column name to map the point shape | 
| name_col | a column name to map the point colour | 
| name_size | a column name to map the point size | 
| name_fill | a column name to map the point fill | 
| name_stroke | a column name to map the point stroke | 
| name_alpha | a column name to map the point transparency | 
| ... | additional geom_point() arguments | 
Value
a swimmer plot with points matching the lines
See Also
swimmer_plot swimmer_points swimmer_lines  swimmer_lines  swimmer_arrows swimmer_text
Examples
#Start with a base swimmer plot
swim_plot <-swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',name_fill='Arm',col="black"
,id_order= 'Arm')
# Then add lines to the plot
swim_plot_with_lines <- swim_plot +
swimmer_lines(df_lines=ClinicalTrial.Response,id='id',start =
'Response_start',end='Response_end',name_col='Response',size=3)
# Add points to the start and end of the lines
swim_plot_with_lines_and_points <- swim_plot_with_lines+
swimmer_points_from_lines(df_lines=ClinicalTrial.Response,id='id',start =
'Response_start',end = 'Response_end', cont =
'Continued_response',name_col='Response',size=4)
# Add ggplot layers to improve the plot's aesthetic
swim_plot_with_lines_and_points +
ggplot2::scale_color_manual(name="Response",values=c("grey20","grey80"))+
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')+
ggplot2::guides(fill = ggplot2::guide_legend(override.aes = list(shape =
NA)))+
ggplot2::scale_shape_manual(name='',values=c(17,15),breaks =
c('Response_start','Response_end'),labels=c('Response Start','Response End'))
Adding text to a swimmers plot
Description
This function allows you to add text to a swimmers plot created with swimmer_plot
Usage
swimmer_text(
  df_text,
  id = "id",
  start = "start",
  label = "label",
  name_col = NULL,
  name_size = NULL,
  name_alpha = NULL,
  name_fontface = NULL,
  adj.y = 0,
  adj.x = 0,
  ...
)
Arguments
| df_text | a data frame | 
| id | column name for id, default is 'id' | 
| start | column name with the text start locations (if there is no start column will default 0 for all text) | 
| label | a column with the text to be added to the plot | 
| name_col | a column name to map the text colour | 
| name_size | a column name to map the text size | 
| name_alpha | a column name to map the text transparency | 
| name_fontface | a column name to map the text fontface ("plain", "bold", "italic", "bold.italic" can all be used) | 
| adj.y | amount to adjust the text within the box vertically (default is 0, text is in the centre of each bar) | 
| adj.x | amount to adjust the text within the box horizontally (default is 0, text starts at the origin) | 
| ... | additional geom_text() arguments | 
Value
a swimmer plot with text on the bars
See Also
swimmer_plot swimmer_points swimmer_lines  swimmer_points_from_lines swimmer_arrows
Examples
#Start with a base swimmer plot
swim_plot <-
 swimmer_plot(df=ClinicalTrial.Arm,id='id',end='End_trt',
 name_fill='Arm',col="black",id_order='Arm',alpha=0.6)
# Then add text to the plot
swim_plot_with_text <- swim_plot +   swimmer_text(df_text =
ClinicalTrial.Stage,label = 'Stage',size=3,
fontface=ifelse(ClinicalTrial.Stage$Stage=="Early Stage","bold","plain"))
# Add ggplot layers to improve the plot's aesthetic
swim_plot_with_text +
ggplot2::scale_fill_manual(name="Treatment",values=c("#e41a1c", "#377eb8","#4daf4a"))+
ggplot2::ylab('Time (Days)')