Introduction
Oncology clinical trials often generate a large amount of longitudinal patient-level information. A single patient may receive multiple treatment cycles, experience dose interruptions or reductions, undergo repeated tumor assessments, achieve a response, progress, discontinue treatment, and remain in follow-up. Tables can summarize these events, but they can be difficult to interpret when the goal is to understand the sequence and duration of events for each individual patient.
A swimlane plot solves this problem by assigning one horizontal lane to each patient and using the horizontal axis to represent time. Treatment exposure becomes a horizontal bar, while clinically important events are placed at their corresponding time points.
What Does a Swimlane Plot Show?
The basic structure is straightforward. Each patient occupies one horizontal row, and the x-axis represents a clinically meaningful time scale such as days, weeks, months, or time since first dose.
Figure 1: Basic Oncology Swimlane Plot
Figure 1 demonstrates the central principle: the visual encoding should allow the reader to reconstruct the patient's clinical trajectory without consulting multiple tables.
Choosing the Time Origin
The time origin should be clinically meaningful and should be stated explicitly in the figure title, subtitle, or footnote. Common choices include:
| Time origin | When it is useful | Typical x-axis label |
|---|---|---|
| First dose | Most treatment-course displays | Months since first dose |
| Randomization | Randomized oncology trials when treatment timing differs | Days since randomization |
| Baseline tumor assessment | Response-focused displays | Weeks from baseline assessment |
| Treatment initiation | Trials with a clear treatment start but multiple screening events | Weeks on treatment |
What Belongs in the Lane?
The answer depends on the purpose of the figure. A CSR figure should generally emphasize information that helps interpret treatment exposure and clinical outcome rather than attempting to reproduce every event in the database.
Treatment exposure
Start and stop dates, treatment duration, dose interruptions, dose reductions, or treatment switches when relevant to interpretation.
Tumor response
First response, best response, response assessments, or a compact representation of response status over time.
Disease progression
Progression date and, when clinically important, the basis for progression.
Disposition
Treatment discontinuation, death, withdrawal, loss to follow-up, or ongoing status.
Response Encoding
Response symbols should be simple enough to interpret at a glance. A common conceptual scheme is to distinguish response milestones from progression and treatment-disposition events.
| Event | Possible visual encoding | Interpretive role |
|---|---|---|
| First response | Open circle | Identifies when response was first documented |
| Best response | Star or emphasized marker | Highlights the patient's best recorded response |
| Progressive disease | Filled diamond | Marks progression |
| Death | Vertical tick or cross | Marks death on the patient timeline |
| Ongoing follow-up | Arrow | Indicates observation continues beyond the displayed event |
The exact symbols are a graphic design choice; what matters is consistency and an unambiguous legend. If response categories such as CR, PR, SD, and PD are shown, define them in the figure legend or accompanying text.
Figure 2: Treatment Modifications and Assessments
Representing Dose Reductions and Holds
A treatment bar should not imply uninterrupted exposure if a patient had clinically meaningful treatment interruptions. One useful approach is to divide the exposure bar into segments.
For example, if a patient receives the planned dose through week 16, has a dose reduction through week 24, and then returns to the original dose, the lane can contain three contiguous segments rather than one undifferentiated bar.
Figure 3: First Response, Best Response, Progression, and Follow-Up
Ordering the Patients
Patient ordering has a major effect on how quickly a reader can interpret the figure. Random ordering may be statistically neutral, but it often produces a visually noisy display.
Common ordering strategies include:
- Best response: responders first, followed by stable disease and progressive disease.
- Time to progression: patients ordered by progression time.
- Treatment duration: longest treatment exposure first.
- Patient identifier: useful when traceability is the primary objective.
- Stratification factor: useful when comparing treatment cohorts or biologically relevant subgroups.
A Useful Mathematical Representation
Although a swimlane is primarily a graphical display, it helps to think of each patient's record as a collection of time intervals and event times.
For patient \(i\), let \(T_{i0}\) denote treatment start and \(T_{i1}\) denote treatment end. Treatment duration can then be represented conceptually as:
\[D_i = T_{i1} - T_{i0}.\]For a response event occurring at \(R_i\), time to first response can be expressed as:
\[TTR_i = R_i - T_{i0}.\]Likewise, if progression occurs at \(P_i\), time to progression from treatment start is:
\[TTP_i = P_i - T_{i0}.\]The swimlane does not replace formal time-to-event analyses. Instead, it provides a patient-level visual context for the same longitudinal information.
Data Structure for Programming
A robust swimlane program is much easier to maintain when treatment intervals and clinical events are stored separately. A conceptual patient-level event dataset might look like this:
patient_id event_type start_day end_day response reason 001 treatment 0 180 — — 001 dose_reduction 84 126 — AE 001 response 56 56 PR — 001 progression 180 180 PD — 002 treatment 0 120 — — 002 response 42 42 PR — 002 progression 120 120 PD — 003 treatment 0 240 — — 003 response 70 70 SD — 003 response 140 140 PR — 003 follow_up 240 240 — ongoing
This structure separates interval data from point events. That separation is particularly helpful when a patient has multiple dose changes, treatment holds, or response assessments.
Programming Logic
Example R Implementation
The following is a simplified example using ggplot2. The exact implementation should be adapted to the analysis dataset, display conventions, and production standards for the study.
library(ggplot2)
ggplot() +
geom_segment(
data = treatment,
aes(x = start_day, xend = end_day,
y = patient, yend = patient),
linewidth = 7,
lineend = "round"
) +
geom_point(
data = response,
aes(x = event_day, y = patient, shape = response),
size = 3
) +
geom_point(
data = progression,
aes(x = progression_day, y = patient),
shape = 18,
size = 3
) +
geom_point(
data = discontinuation,
aes(x = discontinuation_day, y = patient),
shape = 124,
size = 5
) +
scale_x_continuous(name = "Days from first dose") +
scale_y_discrete(name = NULL, limits = patient_order) +
theme_minimal()
Handling Patients With No Progression
Patients without progression require special attention because the end of their displayed lane may represent different things: treatment discontinuation without progression, death without documented progression, database cutoff, or ongoing follow-up.
| Patient status | Suggested representation |
|---|---|
| Ongoing treatment | Continue the treatment bar to the data cutoff and use an ongoing indicator if appropriate. |
| Treatment stopped, no progression | End treatment at the actual stop date; do not imply progression. |
| Progression after treatment stop | Show treatment ending first and progression later. |
| Death without prior documented progression | Show death separately; do not automatically convert death into a progression event unless the analysis definition specifies this. |
| Lost to follow-up | Use the last known assessment or follow-up date and a clearly defined censoring convention. |
Common Mistakes
Too many symbols
If every database event is displayed, the plot becomes a data dump. Include only events needed to answer the figure's clinical question.
Unclear time origin
A reader should never have to infer whether time begins at randomization, first dose, baseline scan, or another milestone.
Ambiguous bars
A single continuous bar can incorrectly suggest uninterrupted exposure when treatment holds or dose modifications occurred.
Poor patient ordering
Unstructured ordering makes response patterns difficult to see and can force the reader to scan every lane.
Inconsistent event definitions
Response, progression, and discontinuation should come from controlled derivations rather than ad hoc visual inspection.
Unreadable legends
The legend should explain every symbol and treatment-bar convention without requiring the reader to search the text.
Validation Checklist
| Check | Question |
|---|---|
| Population | Does every displayed patient belong in the prespecified analysis population? |
| Dates | Do treatment start/stop dates match the source analysis dataset? |
| Exposure | Are holds, reductions, and treatment interruptions represented correctly? |
| Response | Are first response and best response derived using the same definitions as the corresponding analysis? |
| Progression | Does the plotted progression date match the analysis definition? |
| Disposition | Are discontinuation and death shown separately and correctly? |
| Ordering | Is the patient order reproducible and documented? |
| Legend | Can every symbol and bar segment be interpreted without ambiguity? |
| Cutoff | Is the data cutoff date clearly stated? |
| Reproducibility | Can the figure be regenerated from controlled datasets and documented programs? |
When Should You Use a Swimlane Plot?
Swimlanes are particularly effective when the clinical story is inherently longitudinal and patient-level. They are often useful for early-phase oncology studies, studies with small or moderate sample sizes, studies with substantial treatment modification, and settings where individual response trajectories are clinically informative.
They are less effective when the number of patients is so large that individual lanes cannot be read. In those situations, aggregated displays, Kaplan–Meier plots, response summaries, or tabular presentations may communicate the primary result more effectively.
Swimlane Plots vs. Other Oncology Figures
| Figure | Primary question | Patient-level? | Best use |
|---|---|---|---|
| Swimlane plot | What happened to each patient over time? | Yes | Treatment course and clinical milestones |
| Waterfall plot | How much did tumor burden change? | Yes | Best percentage change from baseline |
| Spider plot | How did tumor burden change longitudinally? | Yes | Trajectory of tumor response over time |
| Kaplan–Meier plot | How does time-to-event differ across the population? | No, aggregated | PFS, OS, and other time-to-event endpoints |
| Forest plot | How do effect estimates differ across groups? | No, aggregated | Subgroup treatment effects |
Final Takeaways
- A swimlane plot is a patient-level longitudinal visualization, not merely a treatment-duration chart.
- The horizontal axis should have a clearly defined and clinically meaningful time origin.
- Treatment exposure should form the visual backbone, with response, progression, and disposition events layered on top.
- Dose reductions and treatment holds should be visually distinguishable when they matter to interpretation.
- Patient ordering should be prespecified and reproducible.
- Every displayed event should trace back to a controlled analysis derivation.
- The figure should complement, rather than replace, formal efficacy and safety analyses.
References
Eisenhauer, E.A., et al. (2009). New response evaluation criteria in solid tumours: Revised RECIST guideline (version 1.1). European Journal of Cancer, 45(2), 228–247.
Food and Drug Administration. Clinical Trial Endpoints for the Approval of Cancer Drugs and Biologics. Guidance for Industry.
National Cancer Institute. Common Terminology Criteria for Adverse Events (CTCAE).
This tutorial uses illustrative patient-level data and graphics. The example figures are not derived from an actual clinical trial.