//  [python]
def plot_feature_distributions(df: pd.DataFrame) -> matplotlib.figure.Figure:
    """
    Plotting distribution of model features.

    ### Parameters
    df: `pd.Dataframe`

    ### Returns
    `matplotlib.figure.Figure`
    """
    figure = plt.figure(figsize=(20.6, 15))

    plt.subplot(3, 3, 1)
    sns.kdeplot(data=df, x="Cholesterol", hue="Stage", fill=True, palette="Purples")
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Cholesterol Distribution in stages")

    plt.subplot(3, 3, 2)
    sns.kdeplot(
        data=df,
        x="Bilirubin",
        hue="Stage",
        fill=True,
        palette="Blues",
        common_norm=True,
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Bilirubin")

    plt.subplot(3, 3, 3)
    sns.kdeplot(
        data=df,
        x="Tryglicerides",
        hue="Stage",
        fill=True,
        palette="Purples",
        common_norm=True,
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Tryglicerides")

    plt.subplot(3, 3, 4)
    sns.kdeplot(
        data=df, x="Age", hue="Stage", fill=True, palette="Blues", common_norm=True
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Age Distribution in stages")

    plt.subplot(3, 3, 5)
    sns.kdeplot(
        data=df,
        x="Prothrombin",
        hue="Stage",
        fill=True,
        palette="Purples",
        common_norm=True,
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Prothrombin")

    plt.subplot(3, 3, 6)
    sns.kdeplot(
        data=df, x="Copper", hue="Stage", fill=True, palette="Blues", common_norm=True
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Copper")

    plt.subplot(3, 3, 7)
    sns.kdeplot(data=df, x="Platelets", hue="Stage", fill=True, palette="Purples")
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Platelets in stages")

    plt.subplot(3, 3, 8)
    sns.kdeplot(
        data=df, x="Albumin", hue="Stage", fill=True, palette="Blues", common_norm=True
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("Albumin")

    plt.subplot(3, 3, 9)
    sns.kdeplot(
        data=df, x="SGOT", hue="Stage", fill=True, palette="Purples", common_norm=True
    )
    sns.despine(top=True, right=True, bottom=True, left=True)
    plt.tick_params(axis="both", which="both", bottom=False, top=False, left=False)
    plt.xlabel("")
    plt.title("SGOT")

    return figure