Skip to content

plot_lineage_steps

Public callable

Render lineage steps as a directed graph figure.

Parameters:

Name Type Description Default
lineage_steps_or_record iterable

Lineage step dictionaries containing source, target, and transformation keys.

required
title str or None

Optional chart title override.

None

Returns:

Type Description
Figure

Rendered lineage diagram figure.

Source code in src/fabricops_kit/lineage.py
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
def plot_lineage_steps(lineage_steps_or_record, title: str | None = None):
    """Render lineage steps as a directed graph figure.

    Parameters
    ----------
    lineage_steps_or_record : iterable
        Lineage step dictionaries containing source, target, and transformation keys.
    title : str or None, default=None
        Optional chart title override.

    Returns
    -------
    matplotlib.figure.Figure
        Rendered lineage diagram figure.
    """
    import matplotlib.pyplot as plt
    import networkx as nx
    g = nx.DiGraph()
    for s in lineage_steps_or_record:
        g.add_edge(s.get("source", "unknown"), s.get("target", "unknown"), label=s.get("transformation", ""))
    fig, ax = plt.subplots(figsize=(10, 5))
    pos = nx.spring_layout(g, seed=42)
    nx.draw(g, pos, with_labels=True, node_color="#f2f2f2", ax=ax)
    nx.draw_networkx_edge_labels(g, pos, edge_labels={(u, v): d.get("label", "") for u, v, d in g.edges(data=True)}, font_size=7, ax=ax)
    ax.set_title(title or "Notebook lineage")
    return fig