From 7215e8498e37b842299dfcb324792eca9a9109ca Mon Sep 17 00:00:00 2001 From: Dave Berenbaum Date: Mon, 22 Jan 2024 21:05:42 -0500 Subject: [PATCH] add mean transform to linear plot tooltip (#151) Co-authored-by: Matt Seddon --- pyproject.toml | 2 +- src/dvc_render/vega_templates.py | 1 + tests/test_vega.py | 40 ++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 967a2cc..5f69eff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -106,7 +106,7 @@ module = [ ignore_missing_imports = true [tool.codespell] -ignore-words-list = " " +ignore-words-list = "fpr" [tool.ruff] ignore = [ diff --git a/src/dvc_render/vega_templates.py b/src/dvc_render/vega_templates.py index 2ab708d..d0a9495 100644 --- a/src/dvc_render/vega_templates.py +++ b/src/dvc_render/vega_templates.py @@ -594,6 +594,7 @@ class SmoothLinearTemplate(Template): {"calculate": Template.anchor("pivot_field"), "as": "pivot_field"}, { "pivot": "pivot_field", + "op": "mean", "value": Template.anchor("y"), "groupby": [Template.anchor("x")], }, diff --git a/tests/test_vega.py b/tests/test_vega.py index bc92955..d06c09f 100644 --- a/tests/test_vega.py +++ b/tests/test_vega.py @@ -604,6 +604,46 @@ def test_no_revs_with_datapoints(): } +# https://github.com/iterative/studio/issues/8851 +def test_linear_tooltip_groupby(): + datapoints = [ + { + "filename": "roc.json", + "fpr": 0.00399400898652022, + "tpr": 0.193158953722334, + "rev": "main", + "threshold": 0.84, + }, + { + "filename": "roc.json", + "fpr": 0.00399400898652022, + "tpr": 0.2012072434607646, + "rev": "main", + "threshold": 0.829854797979798, + }, + { + "filename": "roc.json", + "fpr": 0.00399400898652022, + "tpr": 0.20724346076458752, + "rev": "main", + "threshold": 0.8266666666666667, + }, + ] + + props = { + "anchors_y_definitions": [{"filename": "test", "field": "fpr"}], + "revs_with_datapoints": ["main"], + "template": "linear", + "x": "fpr", + "y": "tpr", + } + + renderer = VegaRenderer(datapoints, "foo", **props) + plot_content = renderer.get_filled_template() + + assert plot_content["layer"][3]["transform"][1]["op"] == "mean" + + @pytest.mark.parametrize( ( "anchors_y_definitions",