From db91335af140539a0a8abf9618dc8c0fdba5110a Mon Sep 17 00:00:00 2001 From: Carl Buchholz <32228189+aGuyLearning@users.noreply.github.com> Date: Tue, 21 Jan 2025 15:19:26 +0100 Subject: [PATCH] Update grid specification in kaplan_meier function and rerendered test images --- ehrapy/plot/_survival_analysis.py | 3 +-- .../kaplain_meier_create_expected_plots.ipynb | 10 +++++----- tests/plot/_images/kaplan_meier_expected.png | Bin 10332 -> 10608 bytes 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ehrapy/plot/_survival_analysis.py b/ehrapy/plot/_survival_analysis.py index 7a7eff72..2045f93e 100644 --- a/ehrapy/plot/_survival_analysis.py +++ b/ehrapy/plot/_survival_analysis.py @@ -269,7 +269,7 @@ def kaplan_meier( color = [None] * len(kmfs) fig = plt.figure(constrained_layout=True, figsize=figsize) - spec = fig.add_gridspec(2, 1) + spec = fig.add_gridspec(2, 1) if display_survival_statistics else fig.add_gridspec(1, 1) ax = plt.subplot(spec[0, 0]) for i, kmf in enumerate(kmfs): @@ -301,7 +301,6 @@ def kaplan_meier( if title: ax.set_title(title) - # Prepare data for the table if display_survival_statistics: xticks = [x for x in ax.get_xticks() if x >= 0] xticks_space = xticks[1] - xticks[0] diff --git a/tests/_scripts/kaplain_meier_create_expected_plots.ipynb b/tests/_scripts/kaplain_meier_create_expected_plots.ipynb index b5bff552..21cf88ab 100644 --- a/tests/_scripts/kaplain_meier_create_expected_plots.ipynb +++ b/tests/_scripts/kaplain_meier_create_expected_plots.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -86,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ diff --git a/tests/plot/_images/kaplan_meier_expected.png b/tests/plot/_images/kaplan_meier_expected.png index cee1a8d01f9cb5f2fd0972445972dc7913318a7a..8b9c619dafc20e707048947431080760c47795a8 100644 GIT binary patch literal 10608 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 literal 10332 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 EFDt`Hod5s;