plot_customer_exposure#

pymc_marketing.clv.plotting.plot_customer_exposure(df, linewidth=None, size=None, labels=None, colors=None, padding=0.25, ax=None)[source]#

Plot the recency and T of DataFrame of customers.

Plots customers as horizontal lines with markers representing their recency and T starting. Order is the same as the DataFrame and plotted from the bottom up.

The lines are colored by recency and T.

Parameters:
  • df (pd.DataFrame) – A DataFrame with columns “recency” and “T” representing the recency and age of customers.

  • linewidth (float, optional) – The width of the horizontal lines in the plot.

  • size (float, optional) – The size of the markers in the plot.

  • labels (Sequence[str], optional) – A sequence of labels for the legend. Default is [“Recency”, “T”].

  • colors (Sequence[str], optional) – A sequence of colors for the legend. Default is [“C0”, “C1”].

  • padding (float, optional) – The padding around the plot. Default is 0.25.

  • ax (plt.Axes, optional) – A matplotlib axes instance to plot on. If None, a new figure and axes is created.

Returns:

The matplotlib axes instance.

Return type:

plt.Axes

Examples

Plot customer exposure

df = pd.DataFrame({
    "recency": [0, 1, 2, 3, 4],
    "T": [5, 5, 5, 5, 5]
})

plot_customer_exposure(df)

Plot customer exposure ordered by recency and T

(
    df
    .sort_values(["recency", "T"])
    .pipe(plot_customer_exposure)
)

Plot exposure for only those with time until last purchase is less than 3

(
    df
    .query("T - recency < 3")
    .pipe(plot_customer_exposure)
)