Source code for njab.plotting.lifelines

"""
Lifeline plots. Adapted from
https://allendowney.github.io/SurvivalAnalysisPython/02_kaplan_meier.html
"""
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd


[docs] def plot_lifelines(obs: pd.DataFrame, ax=None, start_col='DateDiagnose', end_col='DateDeath', status_col='dead') -> matplotlib.axes.Axes: """Plot a lifeline for each observation. """ if ax is None: _, ax = plt.subplots() for i, (_, row) in enumerate(obs.iterrows()): start = row[start_col] end = row[end_col] status = row[status_col] if not status: # ongoing ax.hlines(i, start, end, color='C2') else: # complete ax.hlines(i, start, end, color='C1') ax.plot(end, i, marker='o', color='C1') return ax