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)')