|
| 1 | +from random import sample |
1 | 2 | import plotly.graph_objects as go |
2 | 3 | from plotly.subplots import make_subplots |
3 | 4 | from plotly_resampler import FigureResampler, FigureWidgetResampler |
@@ -34,6 +35,60 @@ def test_fr_f_scatter_agg(float_series, bool_series, cat_series): |
34 | 35 | assert trace.uid not in fr_f._hf_data |
35 | 36 | assert len(trace["y"]) == 10_000 |
36 | 37 |
|
| 38 | + def test_fr_fwr_f_scatter_convert_traces_kwargs( |
| 39 | + float_series, bool_series, cat_series |
| 40 | + ): |
| 41 | + base_fig = make_subplots( |
| 42 | + rows=2, |
| 43 | + cols=2, |
| 44 | + specs=[[{}, {}], [{"colspan": 2}, None]], |
| 45 | + ) |
| 46 | + base_fig.add_trace(go.Scatter(y=cat_series), row=1, col=1) |
| 47 | + base_fig.add_trace(dict(y=bool_series), row=1, col=2) |
| 48 | + base_fig.add_trace(go.Scattergl(y=float_series), row=2, col=1) |
| 49 | + |
| 50 | + fwr = FigureWidgetResampler(base_fig, default_n_shown_samples=10_000) |
| 51 | + assert len(fwr.hf_data) == 0 |
| 52 | + |
| 53 | + fwr = FigureWidgetResampler( |
| 54 | + base_fig, |
| 55 | + default_n_shown_samples=10_000, |
| 56 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 57 | + ) |
| 58 | + assert len(fwr.hf_data) == 3 |
| 59 | + |
| 60 | + n_sample_list = [1010, 1020, 1030] |
| 61 | + fwr = FigureWidgetResampler( |
| 62 | + base_fig, |
| 63 | + default_n_shown_samples=10_000, |
| 64 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 65 | + ) |
| 66 | + assert len(fwr.hf_data) == 3 |
| 67 | + for i, n_samples in enumerate(n_sample_list): |
| 68 | + assert len(fwr.data[i]["y"]) == n_samples |
| 69 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 70 | + |
| 71 | + # FigureResampler as wrapped class |
| 72 | + fr = FigureResampler(base_fig, default_n_shown_samples=10_000) |
| 73 | + assert len(fr.hf_data) == 0 |
| 74 | + |
| 75 | + fr = FigureResampler( |
| 76 | + base_fig, |
| 77 | + default_n_shown_samples=10_000, |
| 78 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 79 | + ) |
| 80 | + assert len(fr.hf_data) == 3 |
| 81 | + |
| 82 | + fr = FigureWidgetResampler( |
| 83 | + base_fig, |
| 84 | + default_n_shown_samples=10_000, |
| 85 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 86 | + ) |
| 87 | + assert len(fr.hf_data) == 3 |
| 88 | + for i, n_samples in enumerate(n_sample_list): |
| 89 | + assert len(fr.data[i]["y"]) == n_samples |
| 90 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 91 | + |
37 | 92 | def test_fwr_f_scatter_agg(float_series, bool_series, cat_series): |
38 | 93 | base_fig = make_subplots( |
39 | 94 | rows=2, |
@@ -211,6 +266,62 @@ def test_fr_fw_scatter_agg(float_series, bool_series, cat_series): |
211 | 266 | assert trace.uid not in fr_fw._hf_data |
212 | 267 | assert len(trace["y"]) == 10_000 |
213 | 268 |
|
| 269 | + def test_fr_fwr_fw_scatter_convert_traces_kwargs( |
| 270 | + float_series, bool_series, cat_series |
| 271 | + ): |
| 272 | + base_fig = go.FigureWidget( |
| 273 | + make_subplots( |
| 274 | + rows=2, |
| 275 | + cols=2, |
| 276 | + specs=[[{}, {}], [{"colspan": 2}, None]], |
| 277 | + ) |
| 278 | + ) |
| 279 | + base_fig.add_trace(go.Scatter(y=cat_series), row=1, col=1) |
| 280 | + base_fig.add_trace(dict(y=bool_series), row=1, col=2) |
| 281 | + base_fig.add_trace(go.Scattergl(y=float_series), row=2, col=1) |
| 282 | + |
| 283 | + fwr = FigureWidgetResampler(base_fig, default_n_shown_samples=10_000) |
| 284 | + assert len(fwr.hf_data) == 0 |
| 285 | + |
| 286 | + fwr = FigureWidgetResampler( |
| 287 | + base_fig, |
| 288 | + default_n_shown_samples=10_000, |
| 289 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 290 | + ) |
| 291 | + assert len(fwr.hf_data) == 3 |
| 292 | + |
| 293 | + n_sample_list = [1010, 1020, 1030] |
| 294 | + fwr = FigureWidgetResampler( |
| 295 | + base_fig, |
| 296 | + default_n_shown_samples=10_000, |
| 297 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 298 | + ) |
| 299 | + assert len(fwr.hf_data) == 3 |
| 300 | + for i, n_samples in enumerate(n_sample_list): |
| 301 | + assert len(fwr.data[i]["y"]) == n_samples |
| 302 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 303 | + |
| 304 | + # FigureResampler as wrapped class |
| 305 | + fr = FigureResampler(base_fig, default_n_shown_samples=10_000) |
| 306 | + assert len(fr.hf_data) == 0 |
| 307 | + |
| 308 | + fr = FigureResampler( |
| 309 | + base_fig, |
| 310 | + default_n_shown_samples=10_000, |
| 311 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 312 | + ) |
| 313 | + assert len(fr.hf_data) == 3 |
| 314 | + |
| 315 | + fr = FigureWidgetResampler( |
| 316 | + base_fig, |
| 317 | + default_n_shown_samples=10_000, |
| 318 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 319 | + ) |
| 320 | + assert len(fr.hf_data) == 3 |
| 321 | + for i, n_samples in enumerate(n_sample_list): |
| 322 | + assert len(fr.data[i]["y"]) == n_samples |
| 323 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 324 | + |
214 | 325 | def test_fwr_fw_scatter_agg(float_series, bool_series, cat_series): |
215 | 326 | base_fig = go.FigureWidget( |
216 | 327 | make_subplots( |
@@ -403,6 +514,63 @@ def test_fr_fr_scatter_agg(float_series, bool_series, cat_series): |
403 | 514 | for trace in fr_fr.data: |
404 | 515 | assert len(trace["y"]) == 10_000 |
405 | 516 |
|
| 517 | + def test_fr_fwr_fr_scatter_convert_traces_kwargs( |
| 518 | + float_series, bool_series, cat_series |
| 519 | + ): |
| 520 | + base_fig = FigureResampler( |
| 521 | + make_subplots( |
| 522 | + rows=2, |
| 523 | + cols=2, |
| 524 | + specs=[[{}, {}], [{"colspan": 2}, None]], |
| 525 | + ), |
| 526 | + default_n_shown_samples=10_000, |
| 527 | + ) |
| 528 | + base_fig.add_trace(go.Scatter(y=cat_series), row=1, col=1) |
| 529 | + base_fig.add_trace(dict(y=bool_series), row=1, col=2) |
| 530 | + base_fig.add_trace(go.Scattergl(y=float_series), row=2, col=1) |
| 531 | + |
| 532 | + fwr = FigureWidgetResampler(base_fig, default_n_shown_samples=10_000) |
| 533 | + assert len(fwr.hf_data) == 0 |
| 534 | + |
| 535 | + fwr = FigureWidgetResampler( |
| 536 | + base_fig, |
| 537 | + default_n_shown_samples=10_000, |
| 538 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 539 | + ) |
| 540 | + assert len(fwr.hf_data) == 3 |
| 541 | + |
| 542 | + n_sample_list = [1010, 1020, 1030] |
| 543 | + fwr = FigureWidgetResampler( |
| 544 | + base_fig, |
| 545 | + default_n_shown_samples=10_000, |
| 546 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 547 | + ) |
| 548 | + assert len(fwr.hf_data) == 3 |
| 549 | + for i, n_samples in enumerate(n_sample_list): |
| 550 | + assert len(fwr.data[i]["y"]) == n_samples |
| 551 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 552 | + |
| 553 | + # FigureResampler as wrapped class |
| 554 | + fr = FigureResampler(base_fig, default_n_shown_samples=10_000) |
| 555 | + assert len(fr.hf_data) == 0 |
| 556 | + |
| 557 | + fr = FigureResampler( |
| 558 | + base_fig, |
| 559 | + default_n_shown_samples=10_000, |
| 560 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 561 | + ) |
| 562 | + assert len(fr.hf_data) == 3 |
| 563 | + |
| 564 | + fr = FigureWidgetResampler( |
| 565 | + base_fig, |
| 566 | + default_n_shown_samples=10_000, |
| 567 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 568 | + ) |
| 569 | + assert len(fr.hf_data) == 3 |
| 570 | + for i, n_samples in enumerate(n_sample_list): |
| 571 | + assert len(fr.data[i]["y"]) == n_samples |
| 572 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 573 | + |
406 | 574 | def test_fr_fr_scatter_no_agg_agg(float_series, bool_series, cat_series): |
407 | 575 | # This initial figure object does not contain any aggregated data as |
408 | 576 | # default_n_shown samples >= the input data |
@@ -780,6 +948,63 @@ def test_fr_fwr_scatter_agg(float_series, bool_series, cat_series): |
780 | 948 | for trace in fr_fw.data: |
781 | 949 | assert len(trace["y"]) == 10_000 |
782 | 950 |
|
| 951 | + def test_fr_fwr_fwr_scatter_convert_traces_kwargs( |
| 952 | + float_series, bool_series, cat_series |
| 953 | + ): |
| 954 | + base_fig = FigureWidgetResampler( |
| 955 | + make_subplots( |
| 956 | + rows=2, |
| 957 | + cols=2, |
| 958 | + specs=[[{}, {}], [{"colspan": 2}, None]], |
| 959 | + ), |
| 960 | + default_n_shown_samples=10_000, |
| 961 | + ) |
| 962 | + base_fig.add_trace(go.Scatter(y=cat_series), row=1, col=1) |
| 963 | + base_fig.add_trace(dict(y=bool_series), row=1, col=2) |
| 964 | + base_fig.add_trace(go.Scattergl(y=float_series), row=2, col=1) |
| 965 | + |
| 966 | + fwr = FigureWidgetResampler(base_fig, default_n_shown_samples=10_000) |
| 967 | + assert len(fwr.hf_data) == 0 |
| 968 | + |
| 969 | + fwr = FigureWidgetResampler( |
| 970 | + base_fig, |
| 971 | + default_n_shown_samples=10_000, |
| 972 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 973 | + ) |
| 974 | + assert len(fwr.hf_data) == 3 |
| 975 | + |
| 976 | + n_sample_list = [1010, 1020, 1030] |
| 977 | + fwr = FigureWidgetResampler( |
| 978 | + base_fig, |
| 979 | + default_n_shown_samples=10_000, |
| 980 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 981 | + ) |
| 982 | + assert len(fwr.hf_data) == 3 |
| 983 | + for i, n_samples in enumerate(n_sample_list): |
| 984 | + assert len(fwr.data[i]["y"]) == n_samples |
| 985 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 986 | + |
| 987 | + # FigureResampler as wrapped class |
| 988 | + fr = FigureResampler(base_fig, default_n_shown_samples=10_000) |
| 989 | + assert len(fr.hf_data) == 0 |
| 990 | + |
| 991 | + fr = FigureResampler( |
| 992 | + base_fig, |
| 993 | + default_n_shown_samples=10_000, |
| 994 | + convert_traces_kwargs=dict(limit_to_views=True), |
| 995 | + ) |
| 996 | + assert len(fr.hf_data) == 3 |
| 997 | + |
| 998 | + fr = FigureWidgetResampler( |
| 999 | + base_fig, |
| 1000 | + default_n_shown_samples=10_000, |
| 1001 | + convert_traces_kwargs=dict(max_n_samples=n_sample_list), |
| 1002 | + ) |
| 1003 | + assert len(fr.hf_data) == 3 |
| 1004 | + for i, n_samples in enumerate(n_sample_list): |
| 1005 | + assert len(fr.data[i]["y"]) == n_samples |
| 1006 | + assert len(fwr.hf_data[i]["y"]) == 10_000 |
| 1007 | + |
783 | 1008 | def test_fr_fwr_scatter_no_agg_agg(float_series, bool_series, cat_series): |
784 | 1009 | # This inital figure object does not contain any aggregated data as |
785 | 1010 | # default_n_shown samples >= the input data |
|
0 commit comments