This function allows you to add arrows to a swimmers plot created with
swimmer_plot
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",
...
)
a data frame
column name for id, default is 'id'
column name with the arrow locations default is "end"
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
amount to adjust the line within the box vertically (default is 0, line is in the centre of each bar)
a column name to map the arrow colour
a vector of the distance from the arrow start to end, default is c(0.1,1)
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
a unit specifying the length of the arrow head (from tip to base in inches (default is 0.1)'
one of "open" or "closed" indicating whether the arrow head should be a closed triangle. Default is 'closed'
additional geom_segment() arguments
a swimmer plot with arrows
swimmer_plot
swimmer_points
swimmer_lines
swimmer_lines
swimmer_points_from_lines
swimmer_text
# NOT RUN {
#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'))
# }
Run the code above in your browser using DataLab