From fd4ab67262c56d0ed8c2d3b7b1c891ed1c9e375e Mon Sep 17 00:00:00 2001 From: Hassan Kibirige Date: Thu, 4 Jan 2024 19:52:00 +0300 Subject: [PATCH] Add pad to stat_ecdf closes #725 --- doc/changelog.qmd | 4 ++++ plotnine/stats/stat_ecdf.py | 7 +++++++ tests/baseline_images/test_aes/stat_ecdf.png | Bin 8868 -> 8904 bytes .../test_stat_ecdf/computed_y_column.png | Bin 9207 -> 9867 bytes tests/baseline_images/test_stat_ecdf/ecdf.png | Bin 7746 -> 8333 bytes .../test_stat_ecdf/ecdf_no_pad.png | Bin 0 -> 7746 bytes tests/test_stat_ecdf.py | 6 ++++++ 7 files changed, 17 insertions(+) create mode 100644 tests/baseline_images/test_stat_ecdf/ecdf_no_pad.png diff --git a/doc/changelog.qmd b/doc/changelog.qmd index 92c81327b..354092e6b 100644 --- a/doc/changelog.qmd +++ b/doc/changelog.qmd @@ -10,6 +10,10 @@ title: Changelog - Requires python >= 3.9 - The name of the calculated aesthetic of [](:class:`~plotnine.stats.stat_function`) changed from `y` to `fx`. +- [](:class:`~plotnine.stats.stat_ecdf`) has gained the `pad` parameter. The + default is set to `True`, which pads the domain with `-inf` and `inf` so + that the ECDF does not have discontinuities at the extremes. To get the + behaviour, set `pad` to `False`. ({{< issue 725 >}}) ### New diff --git a/plotnine/stats/stat_ecdf.py b/plotnine/stats/stat_ecdf.py index 297146661..9cd40dc28 100644 --- a/plotnine/stats/stat_ecdf.py +++ b/plotnine/stats/stat_ecdf.py @@ -19,6 +19,9 @@ class stat_ecdf(stat): n : int, default=None This is the number of points to interpolate with. If :py:`None`, do not interpolate. + pad : bool, default=True + If True, pad the domain with `-inf` and `+inf` so that + ECDF does not have discontinuities at the extremes. See Also -------- @@ -42,6 +45,7 @@ class stat_ecdf(stat): "position": "identity", "na_rm": False, "n": None, + "pad": True, } DEFAULT_AES = {"y": after_stat("ecdf")} CREATES = {"ecdf"} @@ -56,6 +60,9 @@ def compute_group(cls, data, scales, **params): else: x = np.linspace(data["x"].min(), data["x"].max(), params["n"]) + if params["pad"]: + x = np.hstack([-np.inf, x, np.inf]) + ecdf = ECDF(data["x"])(x) res = pd.DataFrame({"x": x, "ecdf": ecdf}) return res diff --git a/tests/baseline_images/test_aes/stat_ecdf.png b/tests/baseline_images/test_aes/stat_ecdf.png index e148a673144052eef2816516cb83d6008b365640..56aa9d4e565cff366fd8bea24bd79ea33b640fab 100644 GIT binary patch literal 8904 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 KN|}mgH~tG44c|Nf literal 9207 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 literal 0 HcmV?d00001 diff --git a/tests/test_stat_ecdf.py b/tests/test_stat_ecdf.py index 0e7ddcbe5..e44525545 100644 --- a/tests/test_stat_ecdf.py +++ b/tests/test_stat_ecdf.py @@ -12,6 +12,12 @@ def test_ecdf(): assert p == "ecdf" +def test_ecdf_no_pad(): + p = ggplot(data, aes("x")) + stat_ecdf(size=2, pad=False) + + assert p == "ecdf_no_pad" + + def test_computed_y_column(): p = ( ggplot(data, aes("x"))