Tutorials › Biostatistics › Swimlane Plots in Oncology Reporting

Oncology Data Visualization

Swimlane Plots in Oncology Reporting

A practical guide to building patient-level swimlane plots that clearly communicate treatment exposure, tumor response, progression, dose modifications, discontinuation, and follow-up in oncology clinical trials.

Advanced15 min read

What You'll Learn

  • ✓What a swimlane plot is and why it is useful in oncology reporting
  • ✓How to structure patient-level treatment and event data
  • ✓How to encode response, progression, death, and ongoing follow-up
  • ✓How to display dose reductions, treatment holds, and discontinuations
  • ✓How to order patients so the figure tells a coherent clinical story
  • ✓How to avoid common interpretation and presentation errors

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.

Key idea: A good oncology swimlane plot is not simply a treatment-duration chart. It is a compact patient-level timeline that connects treatment exposure with response, progression, treatment modifications, and patient disposition.

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.

1
Patient lane: one row per patient, usually ordered using a prespecified clinical or statistical rule.
2
Treatment exposure: a bar showing the period during which study treatment was administered.
3
Clinical events: symbols identify response, progression, death, treatment interruption, or other important milestones.
4
Follow-up: an endpoint marker or arrow distinguishes completed observation from patients who remain ongoing.

Figure 1: Basic Oncology Swimlane Plot

Figure 1 · Patient-level treatment and outcome timeline
Example oncology swimlane plot showing treatment duration and clinical events Six patients are shown on horizontal lanes. Treatment exposure is shown as a horizontal bar, with partial response, stable disease, progression, death, dose interruption, and ongoing status marked along the time axis. Time from treatment start (months) 024 6810 1214 Patient 01Patient 02 Patient 03Patient 04 Patient 05Patient 06 PR PD PR PD SD PR PD hold PD PR PD SD PR Treatment exposure Response / assessment Progression Dose interruption
Interpretation. Each horizontal bar represents treatment exposure. Gold circles represent response or assessment milestones, dark diamonds represent progression, and the dashed interval illustrates a treatment hold. The plot is intentionally patient-level: the reader can follow each patient's treatment course from left to right.

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 originWhen it is usefulTypical x-axis label
First doseMost treatment-course displaysMonths since first dose
RandomizationRandomized oncology trials when treatment timing differsDays since randomization
Baseline tumor assessmentResponse-focused displaysWeeks from baseline assessment
Treatment initiationTrials with a clear treatment start but multiple screening eventsWeeks on treatment
Reporting principle: Avoid an unexplained time origin. The definition of a displayed month, week, or day should also be consistent with the analysis and programming specification.

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.

EventPossible visual encodingInterpretive role
First responseOpen circleIdentifies when response was first documented
Best responseStar or emphasized markerHighlights the patient's best recorded response
Progressive diseaseFilled diamondMarks progression
DeathVertical tick or crossMarks death on the patient timeline
Ongoing follow-upArrowIndicates 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

Figure 2 · Treatment exposure with dose modifications and assessment timing
Example swimlane plot emphasizing treatment modifications and assessment timing Five patient lanes display treatment exposure, dose reductions, treatment holds, radiographic assessment diamonds, and discontinuation reasons. Weeks on study 0816 24324048 Patient 101Patient 102 Patient 103Patient 104 Patient 105 reduced dosereduced dosereduced dose holdholdhold PDAEPDPD Radiographic assessment Dose reduction Treatment hold Discontinuation
Interpretation. This version emphasizes treatment modifications. Gold segments indicate reduced-dose periods, dashed boxes indicate treatment holds, diamonds indicate assessment time points, and vertical markers indicate treatment discontinuation. This format is useful when dose intensity or treatment tolerability helps explain differences in treatment duration.

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.

Important distinction: A treatment hold means treatment was temporarily interrupted. A dose reduction means treatment continued at a lower dose. Do not use the same graphical encoding for both unless the figure's purpose is only to show overall treatment exposure.

Figure 3: First Response, Best Response, Progression, and Follow-Up

Figure 3 · Response-focused swimlane plot
Example oncology swimlane plot for treatment and response milestones Four patient lanes show exposure, first response, best response, progression, and death or ongoing follow-up. Months since first dose 0246 8101214 Patient 201Patient 202 Patient 203Patient 204 ★★★★ First response ★Best response Progression Death Ongoing
Interpretation. Open circles identify first response, stars identify best response, diamonds identify progression, the vertical marker identifies death, and the arrow identifies ongoing follow-up. This is an example of a response-centered swimlane rather than a detailed dosing diagram.

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.
Best practice: Select the ordering rule before final production and document it in the figure programming specification. Changing the ordering after reviewing the figure can unintentionally change the visual emphasis of the results.

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

1
Define the analysis population. Specify exactly which patients appear in the figure and why.
2
Create treatment intervals. Derive start and stop dates and split intervals when the visual encoding requires dose changes or holds.
3
Create event records. Derive response, progression, death, discontinuation, and other prespecified milestones.
4
Apply the patient ordering rule. Store the final order explicitly rather than relying on database order.
5
Draw intervals first. Treatment bars should form the visual backbone of the figure.
6
Add events second. Overlay response, progression, discontinuation, and follow-up markers.
7
Validate against source data. Check every patient's treatment dates and major event dates before finalizing the figure.

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()
Production note: For a regulated clinical reporting workflow, the plot should be generated from controlled analysis datasets and validated against independent listings or derived checks. The example above is illustrative rather than a production-ready CSR program.

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 statusSuggested representation
Ongoing treatmentContinue the treatment bar to the data cutoff and use an ongoing indicator if appropriate.
Treatment stopped, no progressionEnd treatment at the actual stop date; do not imply progression.
Progression after treatment stopShow treatment ending first and progression later.
Death without prior documented progressionShow death separately; do not automatically convert death into a progression event unless the analysis definition specifies this.
Lost to follow-upUse 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

CheckQuestion
PopulationDoes every displayed patient belong in the prespecified analysis population?
DatesDo treatment start/stop dates match the source analysis dataset?
ExposureAre holds, reductions, and treatment interruptions represented correctly?
ResponseAre first response and best response derived using the same definitions as the corresponding analysis?
ProgressionDoes the plotted progression date match the analysis definition?
DispositionAre discontinuation and death shown separately and correctly?
OrderingIs the patient order reproducible and documented?
LegendCan every symbol and bar segment be interpreted without ambiguity?
CutoffIs the data cutoff date clearly stated?
ReproducibilityCan 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.

Rule of thumb: Use a swimlane when the question is “What happened to each patient over time?” Use an aggregate statistical figure when the question is “What happened to the population?” The two approaches are complementary, not competing.

Swimlane Plots vs. Other Oncology Figures

FigurePrimary questionPatient-level?Best use
Swimlane plotWhat happened to each patient over time?YesTreatment course and clinical milestones
Waterfall plotHow much did tumor burden change?YesBest percentage change from baseline
Spider plotHow did tumor burden change longitudinally?YesTrajectory of tumor response over time
Kaplan–Meier plotHow does time-to-event differ across the population?No, aggregatedPFS, OS, and other time-to-event endpoints
Forest plotHow do effect estimates differ across groups?No, aggregatedSubgroup treatment effects

Final Takeaways

  1. A swimlane plot is a patient-level longitudinal visualization, not merely a treatment-duration chart.
  2. The horizontal axis should have a clearly defined and clinically meaningful time origin.
  3. Treatment exposure should form the visual backbone, with response, progression, and disposition events layered on top.
  4. Dose reductions and treatment holds should be visually distinguishable when they matter to interpretation.
  5. Patient ordering should be prespecified and reproducible.
  6. Every displayed event should trace back to a controlled analysis derivation.
  7. 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.