From 79d5918813ff32278a00ab0a81066a38d1db433d Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 8 Dec 2023 16:49:50 +0400 Subject: [PATCH 1/6] add ribbon samples notebook --- .../ribbon/regression_confidence_band.svg | 334 + .../regression_confidence_band_dark.svg | 334 + .../samples/ribbon/ribbon_function_plot.svg | 317 + .../ribbon/ribbon_function_plot_dark.svg | 317 + docs/images/samples/ribbon/ribbon_grouped.svg | 342 + .../samples/ribbon/ribbon_grouped_dark.svg | 342 + .../images/samples/ribbon/ribbon_settings.svg | 336 + .../samples/ribbon/ribbon_settings_dark.svg | 336 + docs/images/samples/ribbon/ribbon_simple.svg | 339 + .../samples/ribbon/ribbon_simple_dark.svg | 339 + .../samples/ribbon/ribbon_with_line.svg | 352 + .../samples/ribbon/ribbon_with_line_dark.svg | 352 + docs/topics/samples/ribbon/Simple-Ribbon.md | 28 + .../ribbon/regression_confidence_band.ipynb | 1372 ++++ .../samples/ribbon/ribbon_function_plot.ipynb | 6494 +++++++++++++++++ .../samples/ribbon/ribbon_grouped.ipynb | 618 ++ .../samples/ribbon/ribbon_settings.ipynb | 497 ++ .../samples/ribbon/ribbon_simple.ipynb | 471 ++ .../samples/ribbon/ribbon_with_line.ipynb | 622 ++ .../kotlinx/kandy/letsplot/samples/ribbon.kt | 302 + 20 files changed, 14444 insertions(+) create mode 100644 docs/images/samples/ribbon/regression_confidence_band.svg create mode 100644 docs/images/samples/ribbon/regression_confidence_band_dark.svg create mode 100644 docs/images/samples/ribbon/ribbon_function_plot.svg create mode 100644 docs/images/samples/ribbon/ribbon_function_plot_dark.svg create mode 100644 docs/images/samples/ribbon/ribbon_grouped.svg create mode 100644 docs/images/samples/ribbon/ribbon_grouped_dark.svg create mode 100644 docs/images/samples/ribbon/ribbon_settings.svg create mode 100644 docs/images/samples/ribbon/ribbon_settings_dark.svg create mode 100644 docs/images/samples/ribbon/ribbon_simple.svg create mode 100644 docs/images/samples/ribbon/ribbon_simple_dark.svg create mode 100644 docs/images/samples/ribbon/ribbon_with_line.svg create mode 100644 docs/images/samples/ribbon/ribbon_with_line_dark.svg create mode 100644 docs/topics/samples/ribbon/Simple-Ribbon.md create mode 100644 examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb create mode 100644 examples/notebooks/lets-plot/samples/ribbon/ribbon_function_plot.ipynb create mode 100644 examples/notebooks/lets-plot/samples/ribbon/ribbon_grouped.ipynb create mode 100644 examples/notebooks/lets-plot/samples/ribbon/ribbon_settings.ipynb create mode 100644 examples/notebooks/lets-plot/samples/ribbon/ribbon_simple.ipynb create mode 100644 examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb create mode 100644 kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt diff --git a/docs/images/samples/ribbon/regression_confidence_band.svg b/docs/images/samples/ribbon/regression_confidence_band.svg new file mode 100644 index 00000000..4c19e83e --- /dev/null +++ b/docs/images/samples/ribbon/regression_confidence_band.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + -3 + + + + + + + + + -2 + + + + + + + + + -1 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + -3 + + + + + + + -2 + + + + + + + -1 + + + + + + + 0 + + + + + + + 1 + + + + + + + 2 + + + + + + + 3 + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + x + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/regression_confidence_band_dark.svg b/docs/images/samples/ribbon/regression_confidence_band_dark.svg new file mode 100644 index 00000000..09463a93 --- /dev/null +++ b/docs/images/samples/ribbon/regression_confidence_band_dark.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + -3 + + + + + + + + + -2 + + + + + + + + + -1 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + -3 + + + + + + + -2 + + + + + + + -1 + + + + + + + 0 + + + + + + + 1 + + + + + + + 2 + + + + + + + 3 + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + x + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_function_plot.svg b/docs/images/samples/ribbon/ribbon_function_plot.svg new file mode 100644 index 00000000..ee506fea --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_function_plot.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -4 + + + + + + + + + -3 + + + + + + + + + -2 + + + + + + + + + -1 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + -1.0 + + + + + + + -0.5 + + + + + + + 0.0 + + + + + + + 0.5 + + + + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + x + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_function_plot_dark.svg b/docs/images/samples/ribbon/ribbon_function_plot_dark.svg new file mode 100644 index 00000000..9b5eb133 --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_function_plot_dark.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -4 + + + + + + + + + -3 + + + + + + + + + -2 + + + + + + + + + -1 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + -1.0 + + + + + + + -0.5 + + + + + + + 0.0 + + + + + + + 0.5 + + + + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + x + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_grouped.svg b/docs/images/samples/ribbon/ribbon_grouped.svg new file mode 100644 index 00000000..c86c1b54 --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_grouped.svg @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + 00:00 + + + + + + + + + 06:00 + + + + + + + + + 12:00 + + + + + + + + + 18:00 + + + + + + + + + 24:00 + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + + 250 + + + + + + + 300 + + + + + + + 350 + + + + + + + 400 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + price, tokens + + + + + time + + + + + + + + + currency + + + + + + + + + + + + + + + + + + + Bubble Tea + + + Coin + + + + + + + + + + + + + + + + + + + E-Traders + + + Hedgehogs + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_grouped_dark.svg b/docs/images/samples/ribbon/ribbon_grouped_dark.svg new file mode 100644 index 00000000..84f7f4f3 --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_grouped_dark.svg @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + 00:00 + + + + + + + + + 06:00 + + + + + + + + + 12:00 + + + + + + + + + 18:00 + + + + + + + + + 24:00 + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + + 250 + + + + + + + 300 + + + + + + + 350 + + + + + + + 400 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + price, tokens + + + + + time + + + + + + + + + currency + + + + + + + + + + + + + + + + + + + Bubble Tea + + + Coin + + + + + + + + + + + + + + + + + + + E-Traders + + + Hedgehogs + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_settings.svg b/docs/images/samples/ribbon/ribbon_settings.svg new file mode 100644 index 00000000..710589c2 --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_settings.svg @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + 2019 + + + + + + + + + 2020 + + + + + + + + + 2021 + + + + + + + + + 2022 + + + + + + + + + 2023 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 55 + + + + + + + 60 + + + + + + + 65 + + + + + + + 70 + + + + + + + 75 + + + + + + + 80 + + + + + + + 85 + + + + + + + 90 + + + + + + + 95 + + + + + + + 100 + + + + + + + 105 + + + + + + + 110 + + + + + + + + + + + + + + + + + + + + + + + + + + + + cost + + + + + year + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_settings_dark.svg b/docs/images/samples/ribbon/ribbon_settings_dark.svg new file mode 100644 index 00000000..c7906b2b --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_settings_dark.svg @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + 2019 + + + + + + + + + 2020 + + + + + + + + + 2021 + + + + + + + + + 2022 + + + + + + + + + 2023 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 55 + + + + + + + 60 + + + + + + + 65 + + + + + + + 70 + + + + + + + 75 + + + + + + + 80 + + + + + + + 85 + + + + + + + 90 + + + + + + + 95 + + + + + + + 100 + + + + + + + 105 + + + + + + + 110 + + + + + + + + + + + + + + + + + + + + + + + + + + + + cost + + + + + year + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_simple.svg b/docs/images/samples/ribbon/ribbon_simple.svg new file mode 100644 index 00000000..1838428f --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_simple.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.0 + + + + + + + + + 1.5 + + + + + + + + + 2.0 + + + + + + + + + 2.5 + + + + + + + + + 3.0 + + + + + + + + + 3.5 + + + + + + + + + 4.0 + + + + + + + + + 4.5 + + + + + + + + + 5.0 + + + + + + + + + 5.5 + + + + + + + + + 6.0 + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + + + 1.0 + + + + + + + 1.5 + + + + + + + 2.0 + + + + + + + 2.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + xs + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_simple_dark.svg b/docs/images/samples/ribbon/ribbon_simple_dark.svg new file mode 100644 index 00000000..6a8b70d9 --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_simple_dark.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.0 + + + + + + + + + 1.5 + + + + + + + + + 2.0 + + + + + + + + + 2.5 + + + + + + + + + 3.0 + + + + + + + + + 3.5 + + + + + + + + + 4.0 + + + + + + + + + 4.5 + + + + + + + + + 5.0 + + + + + + + + + 5.5 + + + + + + + + + 6.0 + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + + + 1.0 + + + + + + + 1.5 + + + + + + + 2.0 + + + + + + + 2.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + xs + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_with_line.svg b/docs/images/samples/ribbon/ribbon_with_line.svg new file mode 100644 index 00000000..877f9baf --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_with_line.svg @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Mon + + + + + + + + + Tue + + + + + + + + + Wed + + + + + + + + + Thu + + + + + + + + + Fri + + + + + + + + + Sat + + + + + + + + + Sun + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 15,000 + + + + + + + 16,000 + + + + + + + 17,000 + + + + + + + 18,000 + + + + + + + 19,000 + + + + + + + 20,000 + + + + + + + 21,000 + + + + + + + 22,000 + + + + + + + 23,000 + + + + + + + 24,000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + price + + + + + day of week + + + + + + + + \ No newline at end of file diff --git a/docs/images/samples/ribbon/ribbon_with_line_dark.svg b/docs/images/samples/ribbon/ribbon_with_line_dark.svg new file mode 100644 index 00000000..1610df82 --- /dev/null +++ b/docs/images/samples/ribbon/ribbon_with_line_dark.svg @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Mon + + + + + + + + + Tue + + + + + + + + + Wed + + + + + + + + + Thu + + + + + + + + + Fri + + + + + + + + + Sat + + + + + + + + + Sun + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 15,000 + + + + + + + 16,000 + + + + + + + 17,000 + + + + + + + 18,000 + + + + + + + 19,000 + + + + + + + 20,000 + + + + + + + 21,000 + + + + + + + 22,000 + + + + + + + 23,000 + + + + + + + 24,000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + price + + + + + day of week + + + + + + + + \ No newline at end of file diff --git a/docs/topics/samples/ribbon/Simple-Ribbon.md b/docs/topics/samples/ribbon/Simple-Ribbon.md new file mode 100644 index 00000000..9d3b0437 --- /dev/null +++ b/docs/topics/samples/ribbon/Simple-Ribbon.md @@ -0,0 +1,28 @@ +# Simple Line + + +Explore a simple ribbon plot creation with the 'Simple Ribbon' example using the Kandy library in Kotlin. + + + +'Simple Ribbon' in Kotlin with Kandy: Effortlessly visualize min/max range trends in a clear ribbon plot. + + + +Check out 'Simple Ribbon' for an easy demonstration of ribbon chart plotting with Kandy in Kotlin. + + + + + + + + +![Simple Ribbon](ribbon_simple.svg) { border-effect="rounded" } + + + + GitHub Notebook + Datalore Notebook + + diff --git a/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb b/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb new file mode 100644 index 00000000..abe8d71b --- /dev/null +++ b/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb @@ -0,0 +1,1372 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-08T11:40:51.892818Z", + "start_time": "2023-12-08T11:40:36.404680Z" + } + }, + "outputs": [], + "source": [ + "%use dataframe, kandy" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "val xs = listOf(-3.0, -2.8, -2.7, -2.6, -2.6, -2.5, -2.2, -3.1, -1.5, -0.2, 2.0, 1.2, 2.6, 2.1, 0.1, 1.2, 1.7, 0.0, 2.8, 2.5, 0.2, 1.3, 2.5)\n", + "val ys = listOf(-1.4, -1.2, -1.4, -1.3, -1.2, -1.1, 1.5, 2.4, 1.1, -0.9, 3.5, 1.6, -0.7, 1.2, 0.1, 3.4, 2.8, 4.2, 1.16, 4.1, 2.2, 1.4, 5.1)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-08T11:45:55.957561Z", + "start_time": "2023-12-08T11:45:55.865236Z" + } + }, + "execution_count": 18 + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " y\n", + " \n", + " \n", + " \n", + " \n", + " x\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " " + ], + "application/plot+json": { + "output_type": "lets_plot_spec", + "output": { + "mapping": {}, + "data": {}, + "kind": "plot", + "scales": [ + { + "aesthetic": "x", + "limits": [ + null, + null + ] + }, + { + "aesthetic": "y", + "limits": [ + null, + null + ] + }, + { + "aesthetic": "x", + "limits": [ + null, + null + ] + } + ], + "layers": [ + { + "mapping": { + "x": "x", + "y": "y" + }, + "stat": "identity", + "data": { + "yMin": [ + -2.985583, + -2.8572538, + -2.7290943, + -2.6011763, + -2.47362, + -2.3465502, + -2.2200885, + -2.0943413, + -1.9693933, + -1.8452969, + -1.7220864, + -1.5997572, + -1.4781685, + -1.3571379, + -1.2364838, + -1.1160245, + -0.99576783, + -0.87674695, + -0.7603425, + -0.6479357, + -0.54090834, + -0.4406425, + -0.3485207, + -0.26592597, + -0.19424161, + -0.13485141, + -0.08913946, + -0.058488283, + -0.043466374, + -0.042564187, + -0.053945616, + -0.0757747, + -0.10621553, + -0.1434322, + -0.18558873, + -0.23084892, + -0.27737635, + -0.32333413, + -0.366885, + -0.40619096, + -0.43941337, + -0.46471274, + -0.48024866, + -0.48417956, + -0.47466278, + -0.44985446, + -0.40790927, + -0.3469806, + -0.26522028, + -0.16079336, + -0.03270882, + 0.118735135, + 0.29313302, + 0.47177982, + 0.5600147, + 0.5220665, + 0.45003, + 0.3883987, + 0.33852792, + 0.30083433, + 0.27573538, + 0.26364937, + 0.26499513, + 0.28019205, + 0.30965993, + 0.3538188, + 0.41308898, + 0.4878908, + 0.5786447, + 0.685771, + 0.8096898, + 0.9508213, + 1.1095852, + 1.2786696, + 1.4016788, + 1.431744, + 1.391971, + 1.3159052, + 1.2370911, + 1.189073, + 1.2053945, + 1.3177598, + 1.5057838, + 1.6909021, + 1.7914871, + 1.7259108, + 1.4172429, + 0.9479771, + 0.5725002, + 0.35669798, + 0.26210663, + 0.24936306, + 0.27910385, + 0.31196514, + 0.3085835, + 0.24612929, + 0.16112003, + 0.08293659, + 0.010853118, + -0.058239747 + ], + "yMax": [ + -0.31079334, + -0.21838903, + -0.12588751, + -0.033349503, + 0.05911644, + 0.15139776, + 0.24338564, + 0.33498693, + 0.42613107, + 0.5167803, + 0.60691583, + 0.6965582, + 0.7858651, + 0.8750365, + 0.9642723, + 1.0537733, + 1.1435518, + 1.2325954, + 1.319545, + 1.403042, + 1.481728, + 1.554245, + 1.6192358, + 1.6753429, + 1.7212101, + 1.7554809, + 1.7767992, + 1.7838117, + 1.775979, + 1.7548407, + 1.7222632, + 1.6801131, + 1.6302569, + 1.5745612, + 1.5148928, + 1.4531177, + 1.3911021, + 1.3307117, + 1.2738116, + 1.2222666, + 1.1779402, + 1.1426958, + 1.1183952, + 1.1068995, + 1.1100687, + 1.1297611, + 1.1678342, + 1.2261437, + 1.3065442, + 1.4108737, + 1.5401236, + 1.6939927, + 1.87207, + 2.0556417, + 2.150035, + 2.1194649, + 2.056009, + 2.0041423, + 1.9651982, + 1.9395702, + 1.9276509, + 1.9298322, + 1.9465052, + 1.9780606, + 2.0248885, + 2.0873792, + 2.1659224, + 2.2609076, + 2.3727245, + 2.501763, + 2.648413, + 2.813064, + 2.9961069, + 3.1902008, + 3.3389213, + 3.3953724, + 3.382633, + 3.3342223, + 3.2836597, + 3.2644653, + 3.3101592, + 3.4524226, + 3.670849, + 3.8868527, + 4.0187864, + 3.9850025, + 3.7085524, + 3.271912, + 2.9294515, + 2.7470398, + 2.6861982, + 2.7075489, + 2.7717137, + 2.839316, + 2.8709788, + 2.8438609, + 2.7944674, + 2.7521684, + 2.716227, + 2.6835241 + ], + "x": [ + -3.1, + -3.040404, + -2.980808, + -2.9212122, + -2.8616161, + -2.8020203, + -2.7424242, + -2.6828282, + -2.6232324, + -2.5636363, + -2.5040405, + -2.4444444, + -2.3848486, + -2.3252525, + -2.2656565, + -2.2060606, + -2.1464646, + -2.0868688, + -2.0272727, + -1.9676768, + -1.9080808, + -1.8484849, + -1.7888889, + -1.729293, + -1.6696969, + -1.610101, + -1.550505, + -1.4909091, + -1.4313132, + -1.3717172, + -1.3121212, + -1.2525252, + -1.1929293, + -1.1333333, + -1.0737374, + -1.0141414, + -0.95454544, + -0.8949495, + -0.83535355, + -0.77575755, + -0.7161616, + -0.65656567, + -0.5969697, + -0.5373737, + -0.47777778, + -0.4181818, + -0.35858586, + -0.2989899, + -0.23939393, + -0.17979798, + -0.12020202, + -0.060606062, + -0.001010101, + 0.05858586, + 0.11818182, + 0.17777778, + 0.23737374, + 0.2969697, + 0.35656565, + 0.41616163, + 0.47575757, + 0.53535354, + 0.5949495, + 0.6545454, + 0.7141414, + 0.7737374, + 0.8333333, + 0.8929293, + 0.95252526, + 1.0121212, + 1.0717171, + 1.1313131, + 1.1909091, + 1.2505051, + 1.310101, + 1.369697, + 1.4292929, + 1.4888889, + 1.5484848, + 1.6080809, + 1.6676768, + 1.7272727, + 1.7868687, + 1.8464646, + 1.9060606, + 1.9656565, + 2.0252526, + 2.0848484, + 2.1444445, + 2.2040403, + 2.2636364, + 2.3232324, + 2.3828282, + 2.4424243, + 2.5020201, + 2.5616162, + 2.621212, + 2.680808, + 2.7404041, + 2.8 + ], + "y": [ + -1.6481881, + -1.5378214, + -1.427491, + -1.3172629, + -1.2072518, + -1.0975761, + -0.98835135, + -0.8796771, + -0.77163106, + -0.66425824, + -0.5575853, + -0.45159954, + -0.34615168, + -0.24105075, + -0.13610573, + -0.031125622, + 0.07389201, + 0.17792423, + 0.27960128, + 0.37755314, + 0.4704098, + 0.55680126, + 0.6353575, + 0.7047085, + 0.76348424, + 0.8103147, + 0.8438299, + 0.8626617, + 0.8662563, + 0.8561383, + 0.83415884, + 0.8021692, + 0.7620207, + 0.71556455, + 0.66465205, + 0.61113435, + 0.5568629, + 0.50368875, + 0.45346332, + 0.40803778, + 0.3692634, + 0.3389915, + 0.31907326, + 0.31136, + 0.31770292, + 0.33995333, + 0.37996247, + 0.43958157, + 0.52066195, + 0.6250402, + 0.75370735, + 0.90636396, + 1.0826015, + 1.2637107, + 1.3550248, + 1.3207656, + 1.2530196, + 1.1962705, + 1.151863, + 1.1202022, + 1.1016932, + 1.0967407, + 1.1057502, + 1.1291263, + 1.1672742, + 1.220599, + 1.2895057, + 1.3743992, + 1.4756846, + 1.593767, + 1.7290514, + 1.8819427, + 2.052846, + 2.234435, + 2.3703, + 2.4135582, + 2.387302, + 2.3250637, + 2.2603755, + 2.2267692, + 2.257777, + 2.3850913, + 2.5883164, + 2.7888775, + 2.9051368, + 2.8554566, + 2.5628977, + 2.1099446, + 1.7509758, + 1.5518689, + 1.4741524, + 1.4784559, + 1.5254087, + 1.5756406, + 1.5897812, + 1.5449951, + 1.4777937, + 1.4175525, + 1.36354, + 1.3126422 + ] + }, + "size": 2.0, + "color": "#5470c6", + "sampling": "none", + "position": "identity", + "geom": "line" + }, + { + "mapping": { + "x": "x", + "ymin": "yMin", + "ymax": "yMax" + }, + "stat": "identity", + "data": { + "yMin": [ + -2.985583, + -2.8572538, + -2.7290943, + -2.6011763, + -2.47362, + -2.3465502, + -2.2200885, + -2.0943413, + -1.9693933, + -1.8452969, + -1.7220864, + -1.5997572, + -1.4781685, + -1.3571379, + -1.2364838, + -1.1160245, + -0.99576783, + -0.87674695, + -0.7603425, + -0.6479357, + -0.54090834, + -0.4406425, + -0.3485207, + -0.26592597, + -0.19424161, + -0.13485141, + -0.08913946, + -0.058488283, + -0.043466374, + -0.042564187, + -0.053945616, + -0.0757747, + -0.10621553, + -0.1434322, + -0.18558873, + -0.23084892, + -0.27737635, + -0.32333413, + -0.366885, + -0.40619096, + -0.43941337, + -0.46471274, + -0.48024866, + -0.48417956, + -0.47466278, + -0.44985446, + -0.40790927, + -0.3469806, + -0.26522028, + -0.16079336, + -0.03270882, + 0.118735135, + 0.29313302, + 0.47177982, + 0.5600147, + 0.5220665, + 0.45003, + 0.3883987, + 0.33852792, + 0.30083433, + 0.27573538, + 0.26364937, + 0.26499513, + 0.28019205, + 0.30965993, + 0.3538188, + 0.41308898, + 0.4878908, + 0.5786447, + 0.685771, + 0.8096898, + 0.9508213, + 1.1095852, + 1.2786696, + 1.4016788, + 1.431744, + 1.391971, + 1.3159052, + 1.2370911, + 1.189073, + 1.2053945, + 1.3177598, + 1.5057838, + 1.6909021, + 1.7914871, + 1.7259108, + 1.4172429, + 0.9479771, + 0.5725002, + 0.35669798, + 0.26210663, + 0.24936306, + 0.27910385, + 0.31196514, + 0.3085835, + 0.24612929, + 0.16112003, + 0.08293659, + 0.010853118, + -0.058239747 + ], + "yMax": [ + -0.31079334, + -0.21838903, + -0.12588751, + -0.033349503, + 0.05911644, + 0.15139776, + 0.24338564, + 0.33498693, + 0.42613107, + 0.5167803, + 0.60691583, + 0.6965582, + 0.7858651, + 0.8750365, + 0.9642723, + 1.0537733, + 1.1435518, + 1.2325954, + 1.319545, + 1.403042, + 1.481728, + 1.554245, + 1.6192358, + 1.6753429, + 1.7212101, + 1.7554809, + 1.7767992, + 1.7838117, + 1.775979, + 1.7548407, + 1.7222632, + 1.6801131, + 1.6302569, + 1.5745612, + 1.5148928, + 1.4531177, + 1.3911021, + 1.3307117, + 1.2738116, + 1.2222666, + 1.1779402, + 1.1426958, + 1.1183952, + 1.1068995, + 1.1100687, + 1.1297611, + 1.1678342, + 1.2261437, + 1.3065442, + 1.4108737, + 1.5401236, + 1.6939927, + 1.87207, + 2.0556417, + 2.150035, + 2.1194649, + 2.056009, + 2.0041423, + 1.9651982, + 1.9395702, + 1.9276509, + 1.9298322, + 1.9465052, + 1.9780606, + 2.0248885, + 2.0873792, + 2.1659224, + 2.2609076, + 2.3727245, + 2.501763, + 2.648413, + 2.813064, + 2.9961069, + 3.1902008, + 3.3389213, + 3.3953724, + 3.382633, + 3.3342223, + 3.2836597, + 3.2644653, + 3.3101592, + 3.4524226, + 3.670849, + 3.8868527, + 4.0187864, + 3.9850025, + 3.7085524, + 3.271912, + 2.9294515, + 2.7470398, + 2.6861982, + 2.7075489, + 2.7717137, + 2.839316, + 2.8709788, + 2.8438609, + 2.7944674, + 2.7521684, + 2.716227, + 2.6835241 + ], + "x": [ + -3.1, + -3.040404, + -2.980808, + -2.9212122, + -2.8616161, + -2.8020203, + -2.7424242, + -2.6828282, + -2.6232324, + -2.5636363, + -2.5040405, + -2.4444444, + -2.3848486, + -2.3252525, + -2.2656565, + -2.2060606, + -2.1464646, + -2.0868688, + -2.0272727, + -1.9676768, + -1.9080808, + -1.8484849, + -1.7888889, + -1.729293, + -1.6696969, + -1.610101, + -1.550505, + -1.4909091, + -1.4313132, + -1.3717172, + -1.3121212, + -1.2525252, + -1.1929293, + -1.1333333, + -1.0737374, + -1.0141414, + -0.95454544, + -0.8949495, + -0.83535355, + -0.77575755, + -0.7161616, + -0.65656567, + -0.5969697, + -0.5373737, + -0.47777778, + -0.4181818, + -0.35858586, + -0.2989899, + -0.23939393, + -0.17979798, + -0.12020202, + -0.060606062, + -0.001010101, + 0.05858586, + 0.11818182, + 0.17777778, + 0.23737374, + 0.2969697, + 0.35656565, + 0.41616163, + 0.47575757, + 0.53535354, + 0.5949495, + 0.6545454, + 0.7141414, + 0.7737374, + 0.8333333, + 0.8929293, + 0.95252526, + 1.0121212, + 1.0717171, + 1.1313131, + 1.1909091, + 1.2505051, + 1.310101, + 1.369697, + 1.4292929, + 1.4888889, + 1.5484848, + 1.6080809, + 1.6676768, + 1.7272727, + 1.7868687, + 1.8464646, + 1.9060606, + 1.9656565, + 2.0252526, + 2.0848484, + 2.1444445, + 2.2040403, + 2.2636364, + 2.3232324, + 2.3828282, + 2.4424243, + 2.5020201, + 2.5616162, + 2.621212, + 2.680808, + 2.7404041, + 2.8 + ], + "y": [ + -1.6481881, + -1.5378214, + -1.427491, + -1.3172629, + -1.2072518, + -1.0975761, + -0.98835135, + -0.8796771, + -0.77163106, + -0.66425824, + -0.5575853, + -0.45159954, + -0.34615168, + -0.24105075, + -0.13610573, + -0.031125622, + 0.07389201, + 0.17792423, + 0.27960128, + 0.37755314, + 0.4704098, + 0.55680126, + 0.6353575, + 0.7047085, + 0.76348424, + 0.8103147, + 0.8438299, + 0.8626617, + 0.8662563, + 0.8561383, + 0.83415884, + 0.8021692, + 0.7620207, + 0.71556455, + 0.66465205, + 0.61113435, + 0.5568629, + 0.50368875, + 0.45346332, + 0.40803778, + 0.3692634, + 0.3389915, + 0.31907326, + 0.31136, + 0.31770292, + 0.33995333, + 0.37996247, + 0.43958157, + 0.52066195, + 0.6250402, + 0.75370735, + 0.90636396, + 1.0826015, + 1.2637107, + 1.3550248, + 1.3207656, + 1.2530196, + 1.1962705, + 1.151863, + 1.1202022, + 1.1016932, + 1.0967407, + 1.1057502, + 1.1291263, + 1.1672742, + 1.220599, + 1.2895057, + 1.3743992, + 1.4756846, + 1.593767, + 1.7290514, + 1.8819427, + 2.052846, + 2.234435, + 2.3703, + 2.4135582, + 2.387302, + 2.3250637, + 2.2603755, + 2.2267692, + 2.257777, + 2.3850913, + 2.5883164, + 2.7888775, + 2.9051368, + 2.8554566, + 2.5628977, + 2.1099446, + 1.7509758, + 1.5518689, + 1.4741524, + 1.4784559, + 1.5254087, + 1.5756406, + 1.5897812, + 1.5449951, + 1.4777937, + 1.4175525, + 1.36354, + 1.3126422 + ] + }, + "size": 0.0, + "sampling": "none", + "position": "identity", + "geom": "ribbon" + } + ] + }, + "apply_color_scheme": true, + "swing_enabled": true + } + }, + "metadata": {}, + "output_type": "execute_result", + "execution_count": 19 + } + ], + "source": [ + "plot {\n", + " statSmooth(xs, ys) {\n", + " line { \n", + " x(Stat.x)\n", + " y(Stat.y)\n", + " width = 2.0\n", + " color = Color.BLUE\n", + " }\n", + " ribbon { \n", + " x(Stat.x)\n", + " yMin(Stat.yMin)\n", + " yMax(Stat.yMax)\n", + " borderLine.width = 0.0\n", + " }\n", + " }\n", + "}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-08T11:45:56.603303Z", + "start_time": "2023-12-08T11:45:56.317373Z" + } + }, + "execution_count": 19 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Kotlin", + "language": "kotlin", + "name": "kotlin" + }, + "language_info": { + "name": "kotlin", + "version": "1.9.0", + "mimetype": "text/x-kotlin", + "file_extension": ".kt", + "pygments_lexer": "kotlin", + "codemirror_mode": "text/x-kotlin", + "nbconvert_exporter": "" + }, + "ktnbPluginMetadata": { + "projectLibraries": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/lets-plot/samples/ribbon/ribbon_function_plot.ipynb b/examples/notebooks/lets-plot/samples/ribbon/ribbon_function_plot.ipynb new file mode 100644 index 00000000..88288bb2 --- /dev/null +++ b/examples/notebooks/lets-plot/samples/ribbon/ribbon_function_plot.ipynb @@ -0,0 +1,6494 @@ +{ + "cells": [ + { + "cell_type": "code", + "outputs": [], + "source": [ + "%use dataframe, kandy" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T11:56:47.627258Z", + "start_time": "2023-12-07T11:56:31.525460Z" + } + }, + "execution_count": 1 + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-07T11:56:48.354194Z", + "start_time": "2023-12-07T11:56:47.628220Z" + } + }, + "outputs": [], + "source": [ + "val xs = (-1000..1000).map { it / 250.0f }\n", + "val function = { x: Float -> sin(2 * x) * cos(x / 2 - 3.0) }\n", + "val yActual = xs.map(function)\n", + "val yLow = yActual.map { it - 0.25 }\n", + "val yHigh = yActual.map { it + 0.25 }" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -1.0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " -0.5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0.0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0.5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1.0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " y\n", + " \n", + " \n", + " \n", + " \n", + " x\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " " + ], + "application/plot+json": { + "output_type": "lets_plot_spec", + "output": { + "mapping": {}, + "data": {}, + "kind": "plot", + "scales": [ + { + "aesthetic": "x", + "limits": [ + null, + null + ] + } + ], + "layers": [ + { + "mapping": { + "x": "x", + "ymin": "ymin", + "ymax": "ymax" + }, + "stat": "identity", + "data": { + "ymin": [ + -0.5306435, + -0.5290646, + -0.5274624, + -0.5258373, + -0.52418983, + -0.5225202, + -0.5208287, + -0.5191158, + -0.51738185, + -0.5156272, + -0.51385224, + -0.5120573, + -0.5102426, + -0.5084088, + -0.5065561, + -0.5046849, + -0.50279564, + -0.50088847, + -0.49896407, + -0.49702266, + -0.49506462, + -0.49309027, + -0.49110016, + -0.4890946, + -0.48707396, + -0.48503864, + -0.48298886, + -0.48092532, + -0.47884825, + -0.47675803, + -0.47465506, + -0.47253963, + -0.47041237, + -0.46827355, + -0.46612355, + -0.46396264, + -0.4617915, + -0.45961037, + -0.4574197, + -0.4552198, + -0.45301098, + -0.45079395, + -0.4485689, + -0.4463363, + -0.44409636, + -0.44184977, + -0.4395968, + -0.43733785, + -0.43507332, + -0.43280345, + -0.43052897, + -0.4282501, + -0.42596725, + -0.42368084, + -0.4213911, + -0.41909873, + -0.41680402, + -0.4145073, + -0.41220888, + -0.40990943, + -0.40760922, + -0.4053086, + -0.40300804, + -0.40070775, + -0.3984084, + -0.3961103, + -0.3938138, + -0.39151928, + -0.38922703, + -0.3869377, + -0.38465157, + -0.382369, + -0.3800903, + -0.37781605, + -0.37554657, + -0.37328222, + -0.37102336, + -0.3687703, + -0.36652365, + -0.36428365, + -0.3620507, + -0.35982522, + -0.3576074, + -0.35539788, + -0.35319692, + -0.3510049, + -0.34882206, + -0.34664902, + -0.34448603, + -0.34233344, + -0.34019163, + -0.33806086, + -0.3359417, + -0.3338344, + -0.33173934, + -0.32965672, + -0.32758713, + -0.32553086, + -0.3234882, + -0.32145953, + -0.31944507, + -0.31744543, + -0.31546074, + -0.31349143, + -0.31153783, + -0.3096001, + -0.30767885, + -0.30577427, + -0.3038867, + -0.30201638, + -0.3001638, + -0.2983292, + -0.2965129, + -0.2947152, + -0.29293633, + -0.29117677, + -0.28943673, + -0.2877165, + -0.28601646, + -0.28433672, + -0.2826778, + -0.2810399, + -0.27942333, + -0.27782822, + -0.2762551, + -0.2747041, + -0.27317557, + -0.27166972, + -0.27018675, + -0.2687271, + -0.26729095, + -0.26587856, + -0.26449013, + -0.26312602, + -0.26178646, + -0.26047164, + -0.25918186, + -0.25791723, + -0.25667816, + -0.25546482, + -0.25427744, + -0.25311625, + -0.25198135, + -0.25087318, + -0.2497918, + -0.24873748, + -0.24771035, + -0.24671073, + -0.24573879, + -0.24479468, + -0.24387862, + -0.24299073, + -0.24213134, + -0.24130052, + -0.2404985, + -0.23972543, + -0.23898143, + -0.23826677, + -0.23758154, + -0.23692593, + -0.23630005, + -0.23570411, + -0.23513822, + -0.23460254, + -0.2340972, + -0.2336223, + -0.23317802, + -0.23276447, + -0.23238176, + -0.23203, + -0.23170935, + -0.23141988, + -0.23116168, + -0.23093489, + -0.23073958, + -0.23057586, + -0.2304438, + -0.23034349, + -0.23027502, + -0.23023845, + -0.23023388, + -0.23026133, + -0.23032089, + -0.23041263, + -0.23053658, + -0.23069279, + -0.23088132, + -0.23110221, + -0.2313555, + -0.2316412, + -0.23195934, + -0.23230997, + -0.23269309, + -0.23310873, + -0.23355688, + -0.23403755, + -0.23455074, + -0.2350965, + -0.23567474, + -0.23628548, + -0.2369287, + -0.23760441, + -0.23831259, + -0.23905316, + -0.2398261, + -0.24063139, + -0.24146898, + -0.24233888, + -0.24324094, + -0.24417514, + -0.24514145, + -0.24613982, + -0.24717012, + -0.24823229, + -0.24932627, + -0.25045198, + -0.2516094, + -0.25279835, + -0.25401872, + -0.25527045, + -0.25655353, + -0.25786766, + -0.25921288, + -0.260589, + -0.2619959, + -0.2634336, + -0.2649018, + -0.26640037, + -0.26792926, + -0.26948828, + -0.2710774, + -0.2726963, + -0.27434486, + -0.27602297, + -0.27773058, + -0.27946728, + -0.28123307, + -0.2830277, + -0.28485104, + -0.286703, + -0.28858316, + -0.2904915, + -0.29242775, + -0.29439175, + -0.29638344, + -0.29840234, + -0.30044836, + -0.30252132, + -0.30462107, + -0.30674723, + -0.3088996, + -0.31107804, + -0.31328225, + -0.31551218, + -0.31776726, + -0.32004744, + -0.32235247, + -0.3246822, + -0.3270361, + -0.3294141, + -0.33181593, + -0.33424127, + -0.33669004, + -0.33916166, + -0.34165603, + -0.34417284, + -0.3467118, + -0.34927282, + -0.35185528, + -0.35445905, + -0.3570838, + -0.35972944, + -0.36239535, + -0.36508134, + -0.36778712, + -0.3705124, + -0.373257, + -0.3760203, + -0.37880215, + -0.3816022, + -0.38442013, + -0.3872558, + -0.3901085, + -0.3929781, + -0.39586425, + -0.3987668, + -0.40168503, + -0.4046188, + -0.40756774, + -0.4105315, + -0.4135099, + -0.41650227, + -0.41950837, + -0.42252788, + -0.4255606, + -0.4286058, + -0.43166327, + -0.43473274, + -0.4378137, + -0.44090605, + -0.44400904, + -0.44712242, + -0.45024586, + -0.45337895, + -0.45652148, + -0.45967278, + -0.4628325, + -0.46600038, + -0.4691761, + -0.472359, + -0.4755488, + -0.47874513, + -0.4819476, + -0.48515594, + -0.4883694, + -0.49158782, + -0.4948107, + -0.4980377, + -0.50126857, + -0.50450253, + -0.5077393, + -0.5109786, + -0.51422006, + -0.51746297, + -0.5207071, + -0.523952, + -0.52719724, + -0.5304426, + -0.53368735, + -0.53693116, + -0.54017365, + -0.5434144, + -0.54665315, + -0.5498891, + -0.55312204, + -0.55635154, + -0.55957735, + -0.5627986, + -0.5660151, + -0.5692265, + -0.57243234, + -0.5756323, + -0.57882553, + -0.58201194, + -0.585191, + -0.5883625, + -0.5915257, + -0.59468025, + -0.5978257, + -0.6009617, + -0.60408795, + -0.6072037, + -0.6103087, + -0.6134025, + -0.6164846, + -0.6195548, + -0.6226124, + -0.6256571, + -0.62868834, + -0.63170606, + -0.6347093, + -0.63769794, + -0.64067155, + -0.6436296, + -0.64657193, + -0.64949775, + -0.6524068, + -0.65529865, + -0.65817285, + -0.6610292, + -0.66386694, + -0.66668576, + -0.66948533, + -0.6722653, + -0.675025, + -0.6777641, + -0.68048227, + -0.6831791, + -0.68585426, + -0.6885071, + -0.69113725, + -0.6937445, + -0.6963284, + -0.69888836, + -0.70142406, + -0.7039352, + -0.70642126, + -0.7088821, + -0.71131694, + -0.71372557, + -0.71610755, + -0.7184626, + -0.72079045, + -0.72309035, + -0.72536206, + -0.7276053, + -0.7298197, + -0.73200476, + -0.7341601, + -0.7362855, + -0.73838043, + -0.7404447, + -0.7424778, + -0.7444793, + -0.746449, + -0.74838644, + -0.75029147, + -0.7521634, + -0.75400215, + -0.7558073, + -0.7575785, + -0.7593153, + -0.7610175, + -0.76268464, + -0.76431656, + -0.7659129, + -0.76747316, + -0.76899713, + -0.7704845, + -0.77193505, + -0.7733482, + -0.7747238, + -0.7760616, + -0.7773612, + -0.7786224, + -0.77984476, + -0.78102803, + -0.782172, + -0.78327626, + -0.7843407, + -0.78536487, + -0.7863485, + -0.7872914, + -0.78819335, + -0.7890539, + -0.78987294, + -0.7906501, + -0.79138523, + -0.7920781, + -0.79272825, + -0.7933357, + -0.7939, + -0.794421, + -0.79489857, + -0.7953323, + -0.79572207, + -0.79606766, + -0.79636884, + -0.7966253, + -0.79683703, + -0.7970037, + -0.79712504, + -0.79720104, + -0.7972314, + -0.7972158, + -0.79715437, + -0.79704666, + -0.79689264, + -0.79669213, + -0.7964449, + -0.7961508, + -0.7958096, + -0.79542136, + -0.79498583, + -0.7945028, + -0.7939722, + -0.79339385, + -0.79276764, + -0.79209346, + -0.7913712, + -0.79060066, + -0.78978187, + -0.7889146, + -0.7879988, + -0.7870344, + -0.7860211, + -0.78495914, + -0.7838483, + -0.78268844, + -0.7814795, + -0.78022134, + -0.7789141, + -0.7775576, + -0.77615184, + -0.7746966, + -0.77319205, + -0.77163804, + -0.7700346, + -0.7683816, + -0.766679, + -0.76492685, + -0.76312524, + -0.76127404, + -0.7593732, + -0.7574227, + -0.75542265, + -0.7533731, + -0.75127393, + -0.74912506, + -0.74692684, + -0.74467915, + -0.74238193, + -0.74003524, + -0.73763925, + -0.7351938, + -0.73269916, + -0.73015517, + -0.7275622, + -0.72492003, + -0.7222288, + -0.7194887, + -0.71669966, + -0.7138619, + -0.71097535, + -0.70804036, + -0.7050568, + -0.7020248, + -0.6989446, + -0.6958162, + -0.6926399, + -0.6894156, + -0.6861435, + -0.6828237, + -0.6794566, + -0.6760421, + -0.6725803, + -0.66907156, + -0.66551584, + -0.6619135, + -0.6582646, + -0.6545693, + -0.6508279, + -0.64704037, + -0.64320713, + -0.6393282, + -0.63540393, + -0.6314344, + -0.6274199, + -0.6233607, + -0.61925673, + -0.61510855, + -0.61091614, + -0.60668, + -0.60240006, + -0.5980768, + -0.5937105, + -0.58930105, + -0.5848491, + -0.5803547, + -0.57581824, + -0.5712398, + -0.56661993, + -0.5619588, + -0.55725646, + -0.55251354, + -0.54773, + -0.5429065, + -0.538043, + -0.5331402, + -0.52819806, + -0.5232169, + -0.5181973, + -0.5131393, + -0.50804347, + -0.5029099, + -0.49773917, + -0.49253136, + -0.4872871, + -0.4820066, + -0.47669005, + -0.47133812, + -0.46595085, + -0.4605289, + -0.45507237, + -0.4495819, + -0.44405773, + -0.43850008, + -0.43290967, + -0.4272865, + -0.42163134, + -0.41594428, + -0.410226, + -0.40447673, + -0.39869675, + -0.39288676, + -0.38704687, + -0.38117784, + -0.37527972, + -0.3693533, + -0.3633988, + -0.3574165, + -0.3514072, + -0.34537095, + -0.33930856, + -0.33322012, + -0.32710645, + -0.3209678, + -0.31480443, + -0.30861717, + -0.3024061, + -0.2961721, + -0.2899152, + -0.2836363, + -0.2773356, + -0.2710135, + -0.26467076, + -0.25830752, + -0.2519246, + -0.24552217, + -0.23910105, + -0.23266137, + -0.22620398, + -0.21972921, + -0.21323736, + -0.2067293, + -0.20020515, + -0.1936658, + -0.1871114, + -0.18054278, + -0.17396031, + -0.16736431, + -0.16075565, + -0.15413448, + -0.14750172, + -0.14085746, + -0.13420266, + -0.12753762, + -0.12086268, + -0.11417874, + -0.10748597, + -0.10078528, + -0.094076805, + -0.08736149, + -0.08063965, + -0.07391165, + -0.0671784, + -0.06044006, + -0.05369758, + -0.046951074, + -0.040201504, + -0.03344921, + -0.02669455, + -0.019938473, + -0.013181098, + -0.0064234054, + 3.3446055E-4, + 0.007091538, + 0.013847707, + 0.020601999, + 0.027354028, + 0.03410351, + 0.04084942, + 0.047591634, + 0.054329194, + 0.06106195, + 0.067788936, + 0.07450977, + 0.08122414, + 0.087931074, + 0.0946304, + 0.10132115, + 0.1080032, + 0.11467557, + 0.12133792, + 0.12798986, + 0.13463043, + 0.14125952, + 0.14787613, + 0.15448011, + 0.16107051, + 0.16764699, + 0.17420913, + 0.18075603, + 0.18728752, + 0.19380268, + 0.20030129, + 0.20678243, + 0.21324578, + 0.21969089, + 0.22611691, + 0.23252366, + 0.23891017, + 0.24527626, + 0.2516211, + 0.2579442, + 0.2642453, + 0.2705235, + 0.2767785, + 0.2830095, + 0.28921628, + 0.29539797, + 0.30155438, + 0.30768463, + 0.31378832, + 0.3198651, + 0.32591417, + 0.33193523, + 0.33792746, + 0.3438907, + 0.3498241, + 0.35572726, + 0.3615998, + 0.36744094, + 0.3732504, + 0.37902746, + 0.38477188, + 0.3904828, + 0.3961599, + 0.40180284, + 0.40741077, + 0.41298357, + 0.4185203, + 0.42402095, + 0.42948455, + 0.43491086, + 0.44029957, + 0.4456498, + 0.4509614, + 0.45623365, + 0.4614663, + 0.46665865, + 0.47181028, + 0.47692096, + 0.48198986, + 0.48701686, + 0.49200118, + 0.4969427, + 0.5018406, + 0.5066946, + 0.51150453, + 0.5162695, + 0.52098936, + 0.5256635, + 0.5302916, + 0.5348732, + 0.5394079, + 0.5438951, + 0.54833466, + 0.55272603, + 0.5570687, + 0.5613625, + 0.56560683, + 0.5698014, + 0.57394564, + 0.57803935, + 0.58208215, + 0.58607346, + 0.59001315, + 0.59390056, + 0.5977356, + 0.6015176, + 0.60524654, + 0.6089219, + 0.6125432, + 0.6161102, + 0.6196226, + 0.62308, + 0.6264821, + 0.6298286, + 0.633119, + 0.6363531, + 0.6395306, + 0.6426511, + 0.64571434, + 0.6487201, + 0.6516679, + 0.6545575, + 0.65738875, + 0.66016114, + 0.6628745, + 0.6655286, + 0.66812307, + 0.6706577, + 0.6731322, + 0.6755463, + 0.6778998, + 0.6801923, + 0.6824238, + 0.68459386, + 0.6867023, + 0.6887489, + 0.6907335, + 0.69265574, + 0.6945155, + 0.6963126, + 0.6980467, + 0.69971776, + 0.7013255, + 0.7028697, + 0.70435023, + 0.705767, + 0.7071196, + 0.708408, + 0.7096321, + 0.71079165, + 0.7118866, + 0.7129166, + 0.7138818, + 0.71478176, + 0.7156165, + 0.71638596, + 0.7170899, + 0.71772826, + 0.71830094, + 0.71880776, + 0.7192487, + 0.7196237, + 0.71993256, + 0.72017527, + 0.72035176, + 0.72046196, + 0.7205058, + 0.7204831, + 0.72039396, + 0.7202383, + 0.72001606, + 0.7197272, + 0.7193717, + 0.71894956, + 0.7184606, + 0.71790504, + 0.7172828, + 0.7165937, + 0.7158379, + 0.7150154, + 0.7141262, + 0.71317035, + 0.71214783, + 0.71105874, + 0.70990294, + 0.7086806, + 0.70739174, + 0.7060365, + 0.70461476, + 0.7031267, + 0.70157254, + 0.699952, + 0.69826543, + 0.6965128, + 0.6946942, + 0.6928098, + 0.6908597, + 0.68884397, + 0.68676263, + 0.68461597, + 0.682404, + 0.68012685, + 0.6777847, + 0.6753777, + 0.67290604, + 0.67036974, + 0.6677691, + 0.6651041, + 0.66237503, + 0.6595821, + 0.65672547, + 0.6538052, + 0.6508217, + 0.64777493, + 0.64466524, + 0.6414928, + 0.6382578, + 0.6349604, + 0.631601, + 0.6281797, + 0.62469673, + 0.62115234, + 0.61754686, + 0.6138804, + 0.61015326, + 0.6063657, + 0.602518, + 0.5986105, + 0.59464335, + 0.5906168, + 0.5865312, + 0.582387, + 0.5781843, + 0.5739233, + 0.5696046, + 0.5652282, + 0.5607947, + 0.5563042, + 0.5517571, + 0.5471538, + 0.5424945, + 0.53777957, + 0.53300947, + 0.5281844, + 0.52330476, + 0.518371, + 0.51338327, + 0.50834215, + 0.5032479, + 0.49810085, + 0.49290147, + 0.48765013, + 0.48234722, + 0.47699308, + 0.4715882, + 0.46613282, + 0.46062753, + 0.4550726, + 0.4494685, + 0.44381565, + 0.43811443, + 0.43236533, + 0.42656872, + 0.4207251, + 0.4148348, + 0.40889838, + 0.40291625, + 0.39688876, + 0.3908165, + 0.3846999, + 0.3785393, + 0.37233534, + 0.36608836, + 0.35979885, + 0.35346738, + 0.34709427, + 0.34068012, + 0.3342254, + 0.32773054, + 0.32119608, + 0.31462252, + 0.30801034, + 0.30136, + 0.2946721, + 0.28794715, + 0.28118554, + 0.27438784, + 0.26755464, + 0.26068634, + 0.25378352, + 0.24684672, + 0.23987652, + 0.23287332, + 0.22583774, + 0.21877031, + 0.21167153, + 0.204542, + 0.1973822, + 0.19019274, + 0.18297414, + 0.17572692, + 0.1684517, + 0.16114897, + 0.15381935, + 0.14646335, + 0.13908155, + 0.13167453, + 0.12424284, + 0.11678706, + 0.109307766, + 0.1018055, + 0.09428085, + 0.08673443, + 0.07916674, + 0.071578465, + 0.06397006, + 0.056342226, + 0.048695467, + 0.041030426, + 0.033347614, + 0.025647724, + 0.017931277, + 0.010198844, + 0.0024510915, + -0.0053114644, + -0.013088174, + -0.020878462, + -0.028681722, + -0.036497362, + -0.04432481, + -0.05216343, + -0.060012627, + -0.06787182, + -0.07574039, + -0.083617724, + -0.091503255, + -0.09939636, + -0.10729642, + -0.11520285, + -0.12311504, + -0.1310324, + -0.1389543, + -0.14688015, + -0.15480936, + -0.16274127, + -0.17067534, + -0.17861092, + -0.18654743, + -0.19448425, + -0.20242077, + -0.21035641, + -0.21829054, + -0.22622257, + -0.23415188, + -0.2420779, + -0.25, + -0.25791758, + -0.26583004, + -0.2737368, + -0.28163722, + -0.28953072, + -0.29741672, + -0.3052946, + -0.31316376, + -0.32102364, + -0.32887357, + -0.33671305, + -0.34454143, + -0.35235813, + -0.36016256, + -0.3679541, + -0.37573224, + -0.38349634, + -0.3912458, + -0.39898008, + -0.40669858, + -0.41440073, + -0.4220859, + -0.4297536, + -0.4374032, + -0.44503412, + -0.4526458, + -0.4602377, + -0.46780923, + -0.4753598, + -0.48288888, + -0.4903959, + -0.49788034, + -0.50534153, + -0.51277906, + -0.52019227, + -0.5275806, + -0.5349437, + -0.54228073, + -0.54959136, + -0.556875, + -0.5641311, + -0.57135904, + -0.57855844, + -0.58572865, + -0.5928692, + -0.59997964, + -0.6070593, + -0.6141077, + -0.62112445, + -0.6281089, + -0.6350606, + -0.64197904, + -0.6488637, + -0.6557141, + -0.6625297, + -0.66931003, + -0.67605466, + -0.68276304, + -0.6894347, + -0.6960691, + -0.7026659, + -0.7092245, + -0.7157446, + -0.72222555, + -0.7286669, + -0.7350683, + -0.74142927, + -0.7477494, + -0.754028, + -0.760265, + -0.76645964, + -0.7726116, + -0.7787205, + -0.7847859, + -0.79080737, + -0.7967844, + -0.80271673, + -0.8086038, + -0.8144453, + -0.8202408, + -0.8259899, + -0.83169216, + -0.8373473, + -0.8429549, + -0.84851444, + -0.8540257, + -0.85948825, + -0.8649018, + -0.8702659, + -0.87558013, + -0.88084424, + -0.8860579, + -0.89122075, + -0.8963324, + -0.9013925, + -0.90640074, + -0.91135687, + -0.9162605, + -0.9211113, + -0.9259089, + -0.9306532, + -0.9353437, + -0.93998015, + -0.9445623, + -0.9490898, + -0.95356256, + -0.95798004, + -0.9623421, + -0.9666484, + -0.97089875, + -0.9750928, + -0.97923046, + -0.98331136, + -0.98733526, + -0.99130195, + -0.99521124, + -0.99906284, + -1.0028565, + -1.0065922, + -1.0102694, + -1.0138881, + -1.0174481, + -1.0209491, + -1.0243909, + -1.0277736, + -1.0310968, + -1.0343603, + -1.0375639, + -1.0407076, + -1.043791, + -1.0468142, + -1.0497769, + -1.0526791, + -1.0555204, + -1.058301, + -1.0610205, + -1.0636789, + -1.066276, + -1.0688119, + -1.0712862, + -1.073699, + -1.0760502, + -1.0783396, + -1.0805671, + -1.0827329, + -1.0848366, + -1.0868783, + -1.0888579, + -1.0907754, + -1.0926305, + -1.0944235, + -1.0961542, + -1.0978225, + -1.0994287, + -1.1009722, + -1.1024535, + -1.1038722, + -1.1052285, + -1.1065226, + -1.107754, + -1.1089231, + -1.1100298, + -1.1110742, + -1.1120561, + -1.1129758, + -1.1138332, + -1.1146283, + -1.1153612, + -1.116032, + -1.1166407, + -1.1171873, + -1.117672, + -1.1180947, + -1.1184556, + -1.118755, + -1.1189926, + -1.1191685, + -1.1192832, + -1.1193364, + -1.1193284, + -1.1192592, + -1.1191292, + -1.1189382, + -1.1186864, + -1.1183741, + -1.1180013, + -1.1175683, + -1.1170748, + -1.1165216, + -1.1159084, + -1.1152354, + -1.1145031, + -1.1137114, + -1.1128604, + -1.1119506, + -1.110982, + -1.1099547, + -1.1088691, + -1.1077253, + -1.1065234, + -1.1052638, + -1.1039467, + -1.1025723, + -1.1011407, + -1.0996524, + -1.0981073, + -1.096506, + -1.0948485, + -1.0931351, + -1.0913662, + -1.0895418, + -1.0876623, + -1.0857282, + -1.0837394, + -1.0816963, + -1.0795993, + -1.0774485, + -1.0752444, + -1.0729872, + -1.0706772, + -1.0683146, + -1.0658998, + -1.0634332, + -1.060915, + -1.0583457, + -1.0557253, + -1.0530545, + -1.0503333, + -1.0475622, + -1.0447416, + -1.0418718, + -1.0389531, + -1.0359858, + -1.0329703, + -1.0299071, + -1.0267965, + -1.0236386, + -1.0204341, + -1.0171834, + -1.0138867, + -1.0105444, + -1.007157, + -1.0037247, + -1.000248, + -0.9967272, + -0.993163, + -0.98955554, + -0.98590523, + -0.9822125, + -0.97847784, + -0.97470164, + -0.9708842, + -0.9670261, + -0.9631277, + -0.95918936, + -0.9552116, + -0.9511948, + -0.94713956, + -0.943046, + -0.93891484, + -0.93474627, + -0.9305411, + -0.9262994, + -0.92202187, + -0.9177089, + -0.9133608, + -0.9089782, + -0.90456146, + -0.9001112, + -0.8956276, + -0.89111155, + -0.886563, + -0.8819829, + -0.8773715, + -0.8727292, + -0.86805665, + -0.8633541, + -0.8586223, + -0.8538615, + -0.84907246, + -0.84425545, + -0.83941084, + -0.8345394, + -0.82964146, + -0.82471764, + -0.8197682, + -0.81479394, + -0.80979526, + -0.8047724, + -0.7997262, + -0.7946568, + -0.78956515, + -0.78445137, + -0.77931625, + -0.77416015, + -0.76898336, + -0.76378685, + -0.75857073, + -0.7533358, + -0.7480823, + -0.74281096, + -0.7375222, + -0.73221636, + -0.7268943, + -0.7215563, + -0.716203, + -0.7108346, + -0.70545214, + -0.7000558, + -0.6946459, + -0.6892234, + -0.6837884, + -0.67834187, + -0.67288387, + -0.6674152, + -0.6619362, + -0.65644765, + -0.6509498, + -0.64544314, + -0.63992846, + -0.6344059, + -0.6288763, + -0.62333995, + -0.6177976, + -0.6122496, + -0.60669637, + -0.6011386, + -0.5955766, + -0.5900112, + -0.5844425, + -0.5788714, + -0.5732982, + -0.5677233, + -0.5621475, + -0.55657095, + -0.55099446, + -0.5454183, + -0.5398432, + -0.5342696, + -0.52869767, + -0.5231284, + -0.5175619, + -0.51199895, + -0.50643975, + -0.5008851, + -0.49533534, + -0.4897908, + -0.4842523, + -0.47871995, + -0.4731946, + -0.4676764, + -0.46216616, + -0.45666414, + -0.4511707, + -0.4456867, + -0.44021216, + -0.43474793, + -0.42929417, + -0.42385167, + -0.41842052, + -0.41300154, + -0.40759504, + -0.4022013, + -0.39682108, + -0.39145455, + -0.3861024, + -0.38076487, + -0.37544262, + -0.370136, + -0.36484528, + -0.35957116, + -0.35431382, + -0.34907398, + -0.34385175, + -0.33864787, + -0.33346263, + -0.32829624, + -0.3231495, + -0.31802246, + -0.31291586, + -0.3078298, + -0.30276495, + -0.29772165, + -0.29270008, + -0.28770092, + -0.28272432, + -0.27777097, + -0.2728409, + -0.2679348, + -0.26305294, + -0.25819552, + -0.25336322, + -0.24855614, + -0.24377488, + -0.23901954, + -0.23429078, + -0.22958866, + -0.22491379, + -0.22026642, + -0.21564673, + -0.21105534, + -0.2064923, + -0.20195824, + -0.19745322, + -0.1929778, + -0.1885322, + -0.1841166, + -0.17973156, + -0.17537716, + -0.17105393, + -0.16676195, + -0.16250174, + -0.15827349, + -0.15407737, + -0.14991388, + -0.14578308, + -0.1416855, + -0.13762116, + -0.13359058, + -0.1295939, + -0.12563126, + -0.12170313, + -0.11780957, + -0.11395106, + -0.11012757, + -0.10633961, + -0.10258729, + -0.098870724, + -0.09519036, + -0.09154622, + -0.08793871, + -0.084367864, + -0.08083407, + -0.077337444, + -0.07387809, + -0.070456386, + -0.06707235, + -0.06372635, + -0.060418382, + -0.057148807, + -0.05391761, + -0.050725173, + -0.04757153, + -0.04445677, + -0.04138122, + -0.038344856, + -0.035348013, + -0.03239064, + -0.02947306, + -0.026595315, + -0.023757447, + -0.020959735, + -0.018202161, + -0.015484981, + -0.012808143, + -0.010171922, + -0.007576337, + -0.0050213938, + -0.0025073364, + -3.413088E-5, + 0.0023980462, + 0.0047892197, + 0.0071391794, + 0.009447955, + 0.011715518, + 0.013941704, + 0.016126577, + 0.01826998, + 0.020371955, + 0.022432381, + 0.024451254, + 0.026428623, + 0.028364327, + 0.030258475, + 0.032110944, + 0.03392182, + 0.035691015, + 0.03741852, + 0.039104454, + 0.040748693, + 0.042351335, + 0.043912318, + 0.045431767, + 0.0469096, + 0.048345953, + 0.049740754, + 0.051094096, + 0.05240605, + 0.053676605, + 0.05490588, + 0.056093857, + 0.057240676, + 0.058346327, + 0.059410926, + 0.060434576, + 0.06141731, + 0.062359236, + 0.063260406, + 0.06412096, + 0.06494097, + 0.06572053, + 0.06645977, + 0.06715884, + 0.06781776, + 0.06843669, + 0.06901578, + 0.06955516, + 0.070054896, + 0.07051519, + 0.07093614, + 0.07131795, + 0.071660735, + 0.071964644, + 0.07222981, + 0.07245643, + 0.07264467, + 0.07279469, + 0.072906666, + 0.07298078, + 0.07301719, + 0.073016115, + 0.07297773, + 0.072902225, + 0.07278978, + 0.072640635, + 0.07245499, + 0.07223303, + 0.07197497, + 0.07168105, + 0.07135145, + 0.07098644, + 0.07058622, + 0.07015104, + 0.069681115, + 0.06917666, + 0.06863798, + 0.06806531, + 0.067458846, + 0.06681888, + 0.066145636, + 0.065439425, + 0.064700484, + 0.063929066, + 0.0631254, + 0.06228987, + 0.061422683, + 0.06052414, + 0.059594497, + 0.058633987, + 0.05764301, + 0.056621823, + 0.05557069, + 0.054489926, + 0.053379778, + 0.05224065, + 0.051072795, + 0.049876533, + 0.048652083, + 0.047399912, + 0.046120264, + 0.044813473, + 0.043479845, + 0.042119626, + 0.040733293, + 0.03932113, + 0.037883427, + 0.036420546, + 0.034932725, + 0.0334205, + 0.03188409, + 0.030323857, + 0.028740061, + 0.02713323, + 0.0255036, + 0.023851562, + 0.02217745, + 0.020481525, + 0.018764352, + 0.017026177, + 0.015267356, + 0.013488282, + 0.011689197, + 0.009870677, + 0.008032999, + 0.0061765243, + 0.004301516, + 0.0024085662, + 4.979545E-4, + -0.0014299552, + -0.0033747836, + -0.0053362516, + -0.0073137623, + -0.009307051, + -0.011315708, + -0.013339495, + -0.015377774, + -0.017430276, + -0.019496609, + -0.021576399, + -0.023669358, + -0.02577487, + -0.027892642, + -0.03002229, + -0.032163434, + -0.03431578, + -0.036478687, + -0.038651895, + -0.040835, + -0.043027744, + -0.045229442, + -0.04743985, + -0.04965856, + -0.051885176, + -0.05411943, + -0.056360647, + -0.058608565, + -0.06086279, + -0.06312291, + -0.06538867, + -0.06765939, + -0.06993479, + -0.07221451, + -0.07449825, + -0.07678535, + -0.07907553, + -0.08136841, + -0.083663575, + -0.085960776, + -0.088259324, + -0.09055897, + -0.0928593, + -0.09516006, + -0.09746058, + -0.0997606, + -0.10205972, + -0.10435755, + -0.106653824, + -0.10894788, + -0.111239456, + -0.113528155, + -0.11581358, + -0.1180955, + -0.120373234, + -0.12264653, + -0.12491501, + -0.12717842, + -0.12943608, + -0.13168778, + -0.1339331, + -0.13617168, + -0.13840327, + -0.1406272, + -0.14284326, + -0.14505108, + -0.14725024, + -0.14944053, + -0.1516213, + -0.15379232, + -0.15595321, + -0.15810376, + -0.16024333, + -0.16237168, + -0.16448843, + -0.16659327, + -0.16868594, + -0.17076583, + -0.17283273, + -0.17488626, + -0.1769262, + -0.17895198, + -0.18096337, + -0.18296, + -0.18494156, + -0.18690783, + -0.18885821, + -0.1907925, + -0.19271038, + -0.19461152, + -0.19649568, + -0.19836235, + -0.20021127, + -0.20204218, + -0.20385483, + -0.2056487, + -0.2074236, + -0.20917921, + -0.21091522, + -0.21263145, + -0.21432738, + -0.21600282, + -0.21765748, + -0.21929106, + -0.22090337, + -0.22249395, + -0.22406258, + -0.22560902, + -0.22713305, + -0.22863425, + -0.23011242, + -0.2315673, + -0.23299862, + -0.23440622, + -0.23578966, + -0.23714879, + -0.23848334, + -0.23979306, + -0.24107781, + -0.24233718, + -0.24357103, + -0.2447791, + -0.24596123, + -0.24711709, + -0.24824649, + -0.24934925, + -0.25042513, + -0.25147396, + -0.25249547, + -0.25348946, + -0.25445575, + -0.25539422, + -0.25630453, + -0.2571866, + -0.2580402, + -0.25886515, + -0.25966135, + -0.2604285, + -0.2611665, + -0.26187518, + -0.26255438, + -0.26320398, + -0.26382375, + -0.26441357, + -0.2649733, + -0.26550287, + -0.26600203, + -0.26647067, + -0.2669087, + -0.26731598, + -0.2676924, + -0.26803783, + -0.26835215, + -0.26863524, + -0.26888704, + -0.26910746, + -0.26929632, + -0.26945361, + -0.2695792, + -0.26967302, + -0.269735, + -0.26976508, + -0.26976314, + -0.26972914, + -0.26966304, + -0.26956475, + -0.2694342, + -0.26927143, + -0.26907632, + -0.26884884, + -0.26858896, + -0.26829663, + -0.26797187, + -0.26761463, + -0.26722488, + -0.26680264, + -0.26634786, + -0.2658606, + -0.26534072, + -0.2647884, + -0.26420352, + -0.26358616, + -0.26293626, + -0.26225397, + -0.26153922, + -0.26079205, + -0.2600125, + -0.2592006, + -0.25835642, + -0.25748003, + -0.2565714, + -0.25563067, + -0.25465778, + -0.25365293, + -0.25261614, + -0.2515475, + -0.25044698, + -0.2493148, + -0.248151, + -0.24695568, + -0.24572891, + -0.24447072, + -0.24318136, + -0.24186088, + -0.24050938, + -0.23912689, + -0.23771371, + -0.23626986, + -0.23479548, + -0.23329072, + -0.2317556, + -0.23019044, + -0.22859533, + -0.22697039, + -0.22531578, + -0.22363156, + -0.22191809, + -0.22017545, + -0.21840379, + -0.21660317, + -0.21477403, + -0.21291639, + -0.21103047, + -0.20911644, + -0.2071744, + -0.20520477, + -0.20320763, + -0.20118318, + -0.19913165, + -0.19705312, + -0.19494805, + -0.19281656, + -0.19065884, + -0.18847501, + -0.18626557, + -0.1840306, + -0.18177038, + -0.17948513, + -0.17717494, + -0.17484038, + -0.17248154, + -0.17009866, + -0.16769205, + -0.16526179, + -0.16280846, + -0.16033219, + -0.15783323, + -0.15531173, + -0.15276828, + -0.15020299, + -0.14761618, + -0.1450081, + -0.14237894, + -0.13972928, + -0.13705927, + -0.13436921, + -0.13165927, + -0.12893006, + -0.12618175, + -0.12341464, + -0.12062908, + -0.117825195, + -0.11500365, + -0.11216464, + -0.10930846, + -0.10643545, + -0.103545785, + -0.100640155, + -0.09771873, + -0.094781846, + -0.091829695, + -0.08886295, + -0.085881814, + -0.08288663, + -0.079877764, + -0.0768554, + -0.07382025, + -0.07077252, + -0.06771256, + -0.064640746, + -0.061557274, + -0.05846288, + -0.05535775, + -0.05224227, + -0.049116667, + -0.045981638, + -0.042837434, + -0.03968442, + -0.03652299, + -0.033353336, + -0.030176247, + -0.026991924, + -0.02380076, + -0.020602971, + -0.017399324, + -0.014190047, + -0.010975521, + -0.00775619, + -0.0045322403, + -0.0013044646, + 0.0019269056, + 0.005161476, + 0.008398829, + 0.0116387345, + 0.014880373, + 0.01812357, + 0.021367881, + 0.024613066, + 0.027858354, + 0.031103482, + 0.03434806, + 0.03759162, + 0.040834, + 0.044074323, + 0.04731238, + 0.05054776, + 0.05378004, + 0.057008952, + 0.0602337, + 0.06345406, + 0.066669606, + 0.06988007, + 0.07308466, + 0.07628311, + 0.07947504, + 0.08266, + 0.08583771, + 0.089007415, + 0.092168845, + 0.09532154, + 0.09846532, + 0.10159935, + 0.104723364, + 0.10783696, + 0.11093968, + 0.11403131, + 0.11711102, + 0.12017855, + 0.12323354, + 0.12627551, + 0.12930419, + 0.13231882, + 0.13531919, + 0.13830477, + 0.14127542, + 0.14423029, + 0.14716914, + 0.15009156, + 0.15299715, + 0.15588562, + 0.1587562, + 0.16160865, + 0.16444255, + 0.16725749, + 0.17005323, + 0.17282896, + 0.17558451, + 0.17831941, + 0.18103342, + 0.1837258, + 0.18639635, + 0.18904458, + 0.19167012, + 0.19427274, + 0.1968517, + 0.19940676, + 0.20193748, + 0.20444353, + 0.20692462, + 0.20938003, + 0.21180956, + 0.21421282, + 0.21658953, + 0.21893904, + 0.22126107, + 0.22355525, + 0.22582124, + 0.22805876, + 0.23026712, + 0.23244615, + 0.23459543, + 0.23671474, + 0.23880345, + 0.24086131, + 0.24288796, + 0.24488303, + 0.24684632, + 0.24877717, + 0.25067538, + 0.25254062, + 0.2543725, + 0.2561708, + 0.257935, + 0.25966477, + 0.26135984, + 0.26301998, + 0.26464462, + 0.26623356, + 0.26778647, + 0.26930302, + 0.27078298, + 0.27222586, + 0.27363142, + 0.27499938, + 0.2763294, + 0.27762124, + 0.2788745, + 0.28008893, + 0.28126425, + 0.2824002, + 0.28349635, + 0.28455254 + ], + "ymax": [ + -0.030643523, + -0.029064568, + -0.027462423, + -0.025837325, + -0.024189822, + -0.022520171, + -0.020828743, + -0.019115781, + -0.017381854, + -0.015627207, + -0.0138522275, + -0.012057277, + -0.010242601, + -0.008408789, + -0.006556104, + -0.004684938, + -0.002795639, + -8.8847056E-4, + 0.001035943, + 0.0029773526, + 0.004935378, + 0.0069097406, + 0.008899843, + 0.0109054055, + 0.012926047, + 0.014961372, + 0.017011143, + 0.01907469, + 0.021151762, + 0.023241976, + 0.025344938, + 0.027460366, + 0.029587634, + 0.03172646, + 0.033876453, + 0.036037356, + 0.038208503, + 0.04038962, + 0.042580318, + 0.04478021, + 0.04698901, + 0.049206063, + 0.051431097, + 0.053663716, + 0.055903655, + 0.058150243, + 0.06040321, + 0.06266216, + 0.06492669, + 0.06719655, + 0.06947104, + 0.071749896, + 0.074032746, + 0.07631916, + 0.078608885, + 0.08090125, + 0.08319599, + 0.08549269, + 0.08779111, + 0.09009056, + 0.09239078, + 0.09469138, + 0.096991956, + 0.09929225, + 0.101591595, + 0.10388971, + 0.10618622, + 0.10848073, + 0.11077298, + 0.11306229, + 0.11534843, + 0.11763098, + 0.119909704, + 0.12218394, + 0.12445344, + 0.12671779, + 0.12897663, + 0.13122971, + 0.13347636, + 0.13571635, + 0.13794927, + 0.14017479, + 0.14239262, + 0.14460212, + 0.14680308, + 0.1489951, + 0.15117794, + 0.153351, + 0.15551399, + 0.15766656, + 0.15980835, + 0.16193914, + 0.16405831, + 0.1661656, + 0.16826068, + 0.1703433, + 0.17241286, + 0.17446914, + 0.17651178, + 0.17854045, + 0.18055491, + 0.18255459, + 0.18453924, + 0.18650855, + 0.18846218, + 0.1903999, + 0.19232115, + 0.19422571, + 0.19611327, + 0.19798361, + 0.19983618, + 0.20167078, + 0.2034871, + 0.20528479, + 0.20706369, + 0.20882325, + 0.21056329, + 0.21228348, + 0.21398355, + 0.21566328, + 0.2173222, + 0.21896009, + 0.22057669, + 0.22217178, + 0.22374491, + 0.22529589, + 0.22682445, + 0.2283303, + 0.22981326, + 0.2312729, + 0.23270905, + 0.23412143, + 0.23550989, + 0.23687397, + 0.23821355, + 0.23952836, + 0.24081816, + 0.24208277, + 0.24332182, + 0.24453516, + 0.24572255, + 0.24688376, + 0.24801864, + 0.24912684, + 0.2502082, + 0.25126252, + 0.25228965, + 0.25328925, + 0.25426123, + 0.25520533, + 0.2561214, + 0.25700927, + 0.25786868, + 0.25869948, + 0.2595015, + 0.2602746, + 0.26101857, + 0.26173323, + 0.26241845, + 0.26307407, + 0.26369995, + 0.26429588, + 0.26486176, + 0.26539746, + 0.2659028, + 0.26637772, + 0.26682198, + 0.26723552, + 0.26761824, + 0.26797, + 0.26829064, + 0.26858014, + 0.26883832, + 0.2690651, + 0.2692604, + 0.26942414, + 0.2695562, + 0.2696565, + 0.26972497, + 0.26976153, + 0.26976612, + 0.26973867, + 0.2696791, + 0.26958737, + 0.26946342, + 0.2693072, + 0.26911867, + 0.2688978, + 0.2686445, + 0.2683588, + 0.26804066, + 0.26769003, + 0.26730692, + 0.26689127, + 0.26644313, + 0.26596245, + 0.26544926, + 0.26490352, + 0.26432526, + 0.26371452, + 0.2630713, + 0.2623956, + 0.2616874, + 0.26094684, + 0.26017392, + 0.2593686, + 0.25853103, + 0.25766113, + 0.25675908, + 0.25582486, + 0.25485855, + 0.25386018, + 0.25282988, + 0.2517677, + 0.2506737, + 0.249548, + 0.24839059, + 0.24720167, + 0.24598129, + 0.24472955, + 0.24344648, + 0.24213232, + 0.24078713, + 0.23941101, + 0.23800409, + 0.23656638, + 0.23509821, + 0.23359963, + 0.23207074, + 0.23051172, + 0.2289226, + 0.22730373, + 0.22565515, + 0.22397703, + 0.22226943, + 0.2205327, + 0.21876694, + 0.2169723, + 0.21514897, + 0.21329701, + 0.21141684, + 0.20950851, + 0.20757225, + 0.20560825, + 0.20361657, + 0.20159768, + 0.19955164, + 0.1974787, + 0.19537891, + 0.19325277, + 0.19110039, + 0.18892196, + 0.18671775, + 0.18448783, + 0.18223272, + 0.17995255, + 0.17764753, + 0.17531781, + 0.17296389, + 0.17058589, + 0.16818409, + 0.16575874, + 0.16330996, + 0.16083834, + 0.15834399, + 0.15582718, + 0.15328819, + 0.15072718, + 0.14814472, + 0.14554095, + 0.14291619, + 0.14027055, + 0.13760467, + 0.13491866, + 0.13221288, + 0.1294876, + 0.12674299, + 0.12397969, + 0.12119786, + 0.1183978, + 0.11557987, + 0.11274422, + 0.109891504, + 0.107021905, + 0.10413575, + 0.10123321, + 0.09831496, + 0.0953812, + 0.092432275, + 0.0894685, + 0.086490095, + 0.08349774, + 0.08049164, + 0.07747212, + 0.074439414, + 0.07139421, + 0.06833672, + 0.06526727, + 0.0621863, + 0.05909394, + 0.055990975, + 0.052877586, + 0.04975415, + 0.046621054, + 0.043478504, + 0.040327232, + 0.037167493, + 0.033999633, + 0.030823877, + 0.027641004, + 0.024451192, + 0.021254856, + 0.018052412, + 0.014844061, + 0.011630581, + 0.008412197, + 0.005189298, + 0.0019623132, + -0.0012685506, + -0.0045025116, + -0.0077393157, + -0.010978585, + -0.014220066, + -0.01746298, + -0.020707088, + -0.023951983, + -0.027197234, + -0.030442625, + -0.03368733, + -0.036931153, + -0.04017363, + -0.043414388, + -0.046653137, + -0.049889095, + -0.053122044, + -0.056351528, + -0.05957732, + -0.06279861, + -0.06601515, + -0.06922653, + -0.07243231, + -0.07563225, + -0.078825556, + -0.082011946, + -0.08519102, + -0.08836254, + -0.091525674, + -0.09468022, + -0.0978257, + -0.100961685, + -0.10408796, + -0.10720373, + -0.11030868, + -0.11340246, + -0.1164846, + -0.11955484, + -0.12261242, + -0.12565705, + -0.12868834, + -0.13170604, + -0.1347093, + -0.13769795, + -0.14067152, + -0.14362961, + -0.14657195, + -0.14949776, + -0.1524068, + -0.15529865, + -0.15817288, + -0.1610292, + -0.16386692, + -0.16668577, + -0.16948532, + -0.1722653, + -0.17502497, + -0.17776413, + -0.18048228, + -0.18317908, + -0.18585427, + -0.18850708, + -0.19113727, + -0.19374447, + -0.1963284, + -0.19888835, + -0.20142408, + -0.20393519, + -0.20642126, + -0.20888208, + -0.21131691, + -0.21372554, + -0.21610758, + -0.2184626, + -0.22079043, + -0.22309032, + -0.22536208, + -0.22760528, + -0.22981973, + -0.23200478, + -0.23416016, + -0.2362855, + -0.23838045, + -0.24044472, + -0.24247777, + -0.2444793, + -0.24644898, + -0.24838646, + -0.25029147, + -0.25216344, + -0.25400215, + -0.25580725, + -0.25757846, + -0.25931528, + -0.26101747, + -0.26268467, + -0.26431656, + -0.2659129, + -0.26747316, + -0.26899713, + -0.2704845, + -0.27193502, + -0.27334818, + -0.27472386, + -0.27606162, + -0.27736118, + -0.2786224, + -0.27984473, + -0.28102803, + -0.282172, + -0.2832763, + -0.2843407, + -0.28536484, + -0.28634852, + -0.2872914, + -0.28819335, + -0.28905392, + -0.28987294, + -0.2906501, + -0.29138523, + -0.29207808, + -0.29272828, + -0.29333565, + -0.29389998, + -0.29442105, + -0.29489857, + -0.2953323, + -0.2957221, + -0.29606766, + -0.2963688, + -0.29662535, + -0.29683703, + -0.29700366, + -0.29712507, + -0.29720104, + -0.29723135, + -0.29721585, + -0.29715434, + -0.29704666, + -0.29689264, + -0.2966921, + -0.29644486, + -0.29615077, + -0.29580966, + -0.2954214, + -0.29498583, + -0.2945028, + -0.2939722, + -0.29339385, + -0.29276767, + -0.2920935, + -0.29137123, + -0.29060066, + -0.28978187, + -0.28891462, + -0.28799883, + -0.2870344, + -0.28602114, + -0.28495914, + -0.2838483, + -0.2826884, + -0.28147948, + -0.28022134, + -0.27891412, + -0.2775576, + -0.2761518, + -0.2746966, + -0.27319202, + -0.27163804, + -0.27003458, + -0.26838157, + -0.26667896, + -0.26492688, + -0.26312524, + -0.261274, + -0.25937322, + -0.2574227, + -0.25542265, + -0.2533731, + -0.25127393, + -0.24912508, + -0.24692684, + -0.24467912, + -0.24238192, + -0.24003524, + -0.23763922, + -0.2351938, + -0.23269914, + -0.2301552, + -0.22756216, + -0.22492003, + -0.2222288, + -0.2194887, + -0.21669964, + -0.21386188, + -0.21097536, + -0.20804033, + -0.2050568, + -0.2020248, + -0.19894463, + -0.19581622, + -0.19263989, + -0.18941554, + -0.18614352, + -0.18282373, + -0.17945662, + -0.17604208, + -0.17258029, + -0.16907156, + -0.16551584, + -0.16191353, + -0.15826456, + -0.15456933, + -0.1508279, + -0.1470404, + -0.14320715, + -0.1393282, + -0.13540395, + -0.13143438, + -0.1274199, + -0.12336067, + -0.11925673, + -0.11510854, + -0.11091616, + -0.10667998, + -0.10240004, + -0.09807684, + -0.093710475, + -0.089301065, + -0.08484914, + -0.080354705, + -0.07581825, + -0.07123982, + -0.06661996, + -0.06195879, + -0.057256453, + -0.05251354, + -0.047730032, + -0.042906534, + -0.03804305, + -0.03314017, + -0.02819809, + -0.023216922, + -0.018197306, + -0.013139287, + -0.008043471, + -0.0029098834, + 0.002260839, + 0.007468645, + 0.012712888, + 0.017993394, + 0.023309937, + 0.028661883, + 0.03404915, + 0.039471086, + 0.044927638, + 0.050418098, + 0.055942252, + 0.06149992, + 0.06709034, + 0.072713494, + 0.07836865, + 0.08405573, + 0.08977401, + 0.09552327, + 0.101303264, + 0.107113235, + 0.11295313, + 0.11882217, + 0.12472029, + 0.13064672, + 0.1366012, + 0.14258349, + 0.1485928, + 0.15462905, + 0.16069143, + 0.16677986, + 0.17289354, + 0.1790322, + 0.18519558, + 0.19138283, + 0.19759388, + 0.2038279, + 0.2100848, + 0.21636371, + 0.22266437, + 0.2289865, + 0.23532924, + 0.2416925, + 0.2480754, + 0.25447783, + 0.26089895, + 0.26733863, + 0.27379602, + 0.28027079, + 0.28676265, + 0.2932707, + 0.29979485, + 0.3063342, + 0.31288862, + 0.3194572, + 0.32603967, + 0.3326357, + 0.33924434, + 0.34586552, + 0.3524983, + 0.35914254, + 0.36579734, + 0.3724624, + 0.37913734, + 0.38582125, + 0.39251402, + 0.3992147, + 0.4059232, + 0.41263852, + 0.41936034, + 0.42608836, + 0.4328216, + 0.43955994, + 0.4463024, + 0.4530489, + 0.45979849, + 0.4665508, + 0.47330546, + 0.48006153, + 0.4868189, + 0.4935766, + 0.50033444, + 0.5070915, + 0.5138477, + 0.520602, + 0.527354, + 0.5341035, + 0.54084945, + 0.5475916, + 0.5543292, + 0.5610619, + 0.56778896, + 0.57450974, + 0.58122414, + 0.5879311, + 0.5946304, + 0.60132116, + 0.6080032, + 0.6146756, + 0.6213379, + 0.6279899, + 0.63463044, + 0.64125955, + 0.64787614, + 0.6544801, + 0.6610705, + 0.667647, + 0.6742091, + 0.68075603, + 0.6872875, + 0.69380265, + 0.7003013, + 0.7067824, + 0.7132458, + 0.71969086, + 0.7261169, + 0.7325237, + 0.73891014, + 0.7452763, + 0.7516211, + 0.75794417, + 0.7642453, + 0.7705235, + 0.7767785, + 0.78300947, + 0.7892163, + 0.79539794, + 0.8015544, + 0.8076846, + 0.8137883, + 0.8198651, + 0.82591414, + 0.8319352, + 0.83792746, + 0.8438907, + 0.8498241, + 0.85572726, + 0.8615998, + 0.86744094, + 0.8732504, + 0.8790275, + 0.8847719, + 0.8904828, + 0.8961599, + 0.90180284, + 0.90741074, + 0.91298354, + 0.91852033, + 0.92402095, + 0.92948455, + 0.93491083, + 0.9402996, + 0.9456498, + 0.9509614, + 0.9562337, + 0.9614663, + 0.96665865, + 0.9718103, + 0.97692096, + 0.98198986, + 0.98701686, + 0.9920012, + 0.9969427, + 1.0018406, + 1.0066947, + 1.0115045, + 1.0162694, + 1.0209894, + 1.0256635, + 1.0302917, + 1.0348732, + 1.039408, + 1.0438951, + 1.0483346, + 1.052726, + 1.0570687, + 1.0613625, + 1.0656068, + 1.0698013, + 1.0739456, + 1.0780393, + 1.0820822, + 1.0860734, + 1.0900131, + 1.0939006, + 1.0977355, + 1.1015177, + 1.1052465, + 1.1089219, + 1.1125432, + 1.1161102, + 1.1196226, + 1.12308, + 1.1264821, + 1.1298286, + 1.133119, + 1.1363531, + 1.1395307, + 1.1426511, + 1.1457144, + 1.14872, + 1.151668, + 1.1545575, + 1.1573887, + 1.1601611, + 1.1628746, + 1.1655285, + 1.168123, + 1.1706576, + 1.1731322, + 1.1755463, + 1.1778997, + 1.1801924, + 1.1824237, + 1.1845939, + 1.1867024, + 1.188749, + 1.1907336, + 1.1926557, + 1.1945155, + 1.1963125, + 1.1980467, + 1.1997178, + 1.2013254, + 1.2028697, + 1.2043502, + 1.2057669, + 1.2071196, + 1.208408, + 1.209632, + 1.2107917, + 1.2118866, + 1.2129166, + 1.2138817, + 1.2147818, + 1.2156166, + 1.216386, + 1.2170899, + 1.2177283, + 1.2183009, + 1.2188077, + 1.2192488, + 1.2196237, + 1.2199326, + 1.2201753, + 1.2203517, + 1.220462, + 1.2205057, + 1.2204831, + 1.220394, + 1.2202383, + 1.2200161, + 1.2197273, + 1.2193717, + 1.2189496, + 1.2184606, + 1.217905, + 1.2172828, + 1.2165937, + 1.215838, + 1.2150154, + 1.2141262, + 1.2131704, + 1.2121478, + 1.2110587, + 1.2099029, + 1.2086806, + 1.2073917, + 1.2060364, + 1.2046148, + 1.2031268, + 1.2015725, + 1.199952, + 1.1982654, + 1.1965128, + 1.1946942, + 1.1928098, + 1.1908597, + 1.188844, + 1.1867627, + 1.184616, + 1.182404, + 1.1801269, + 1.1777847, + 1.1753777, + 1.172906, + 1.1703697, + 1.1677691, + 1.1651042, + 1.1623751, + 1.1595821, + 1.1567254, + 1.1538051, + 1.1508217, + 1.1477749, + 1.1446652, + 1.1414928, + 1.1382577, + 1.1349604, + 1.131601, + 1.1281798, + 1.1246967, + 1.1211524, + 1.1175468, + 1.1138804, + 1.1101532, + 1.1063657, + 1.1025181, + 1.0986105, + 1.0946434, + 1.0906168, + 1.0865313, + 1.082387, + 1.0781842, + 1.0739233, + 1.0696045, + 1.0652282, + 1.0607947, + 1.0563042, + 1.0517571, + 1.0471538, + 1.0424944, + 1.0377796, + 1.0330094, + 1.0281844, + 1.0233048, + 1.018371, + 1.0133833, + 1.0083421, + 1.0032479, + 0.9981009, + 0.99290144, + 0.98765016, + 0.9823472, + 0.9769931, + 0.9715882, + 0.9661328, + 0.96062756, + 0.9550726, + 0.9494685, + 0.94381565, + 0.93811446, + 0.9323653, + 0.92656875, + 0.9207251, + 0.9148348, + 0.9088984, + 0.90291625, + 0.8968888, + 0.8908165, + 0.8846999, + 0.8785393, + 0.8723353, + 0.86608833, + 0.85979885, + 0.85346735, + 0.8470943, + 0.8406801, + 0.8342254, + 0.82773054, + 0.8211961, + 0.8146225, + 0.80801034, + 0.80136, + 0.79467213, + 0.7879471, + 0.78118557, + 0.77438784, + 0.76755464, + 0.76068634, + 0.7537835, + 0.74684674, + 0.7398765, + 0.7328733, + 0.7258377, + 0.7187703, + 0.71167153, + 0.704542, + 0.6973822, + 0.69019276, + 0.68297416, + 0.67572695, + 0.66845167, + 0.66114897, + 0.6538193, + 0.64646333, + 0.63908154, + 0.6316745, + 0.62424284, + 0.6167871, + 0.60930777, + 0.6018055, + 0.59428084, + 0.5867344, + 0.5791667, + 0.57157844, + 0.5639701, + 0.55634224, + 0.54869545, + 0.5410304, + 0.5333476, + 0.5256477, + 0.5179313, + 0.51019883, + 0.50245106, + 0.49468854, + 0.48691183, + 0.47912154, + 0.47131827, + 0.46350265, + 0.45567518, + 0.44783658, + 0.43998736, + 0.4321282, + 0.4242596, + 0.41638228, + 0.40849674, + 0.40060362, + 0.39270356, + 0.38479716, + 0.37688497, + 0.3689676, + 0.3610457, + 0.35311985, + 0.34519064, + 0.33725873, + 0.32932466, + 0.32138908, + 0.31345257, + 0.30551577, + 0.29757923, + 0.2896436, + 0.28170946, + 0.27377743, + 0.2658481, + 0.25792208, + 0.25, + 0.24208242, + 0.23416995, + 0.22626321, + 0.21836278, + 0.21046928, + 0.20258328, + 0.1947054, + 0.18683623, + 0.17897637, + 0.17112641, + 0.16328694, + 0.15545857, + 0.14764187, + 0.13983744, + 0.13204588, + 0.12426775, + 0.116503656, + 0.10875419, + 0.10101992, + 0.09330141, + 0.08559927, + 0.07791409, + 0.0702464, + 0.062596805, + 0.054965883, + 0.047354188, + 0.039762285, + 0.032190774, + 0.024640195, + 0.017111111, + 0.009604087, + 0.002119664, + -0.005341548, + -0.01277907, + -0.020192279, + -0.027580641, + -0.03494368, + -0.04228075, + -0.049591377, + -0.056874976, + -0.06413107, + -0.07135903, + -0.07855844, + -0.08572865, + -0.092869245, + -0.09997963, + -0.1070593, + -0.11410776, + -0.121124454, + -0.1281089, + -0.13506061, + -0.14197905, + -0.14886367, + -0.15571408, + -0.16252969, + -0.16931006, + -0.17605466, + -0.18276301, + -0.18943468, + -0.19606914, + -0.20266593, + -0.20922455, + -0.21574458, + -0.22222555, + -0.2286669, + -0.23506832, + -0.2414293, + -0.24774937, + -0.25402805, + -0.26026496, + -0.2664596, + -0.2726116, + -0.27872053, + -0.2847859, + -0.29080737, + -0.29678443, + -0.3027167, + -0.30860382, + -0.31444532, + -0.3202408, + -0.3259899, + -0.3316922, + -0.3373473, + -0.34295484, + -0.34851444, + -0.35402572, + -0.35948828, + -0.36490175, + -0.3702659, + -0.37558013, + -0.38084424, + -0.38605794, + -0.39122072, + -0.39633235, + -0.4013925, + -0.40640077, + -0.41135687, + -0.41626048, + -0.4211113, + -0.42590892, + -0.4306532, + -0.43534368, + -0.43998015, + -0.44456232, + -0.44908985, + -0.45356253, + -0.45798004, + -0.46234205, + -0.4666484, + -0.47089875, + -0.47509286, + -0.47923046, + -0.48331138, + -0.4873353, + -0.49130198, + -0.49521124, + -0.4990628, + -0.5028565, + -0.50659215, + -0.51026934, + -0.51388806, + -0.517448, + -0.5209491, + -0.524391, + -0.5277736, + -0.53109676, + -0.5343603, + -0.5375639, + -0.5407075, + -0.543791, + -0.5468142, + -0.5497769, + -0.55267906, + -0.5555204, + -0.558301, + -0.5610205, + -0.5636788, + -0.566276, + -0.56881183, + -0.5712862, + -0.573699, + -0.57605016, + -0.5783396, + -0.5805671, + -0.5827329, + -0.5848366, + -0.5868783, + -0.5888579, + -0.5907754, + -0.59263057, + -0.59442353, + -0.5961542, + -0.59782255, + -0.5994286, + -0.60097224, + -0.6024534, + -0.60387224, + -0.6052286, + -0.60652256, + -0.60775405, + -0.60892314, + -0.6100299, + -0.6110742, + -0.6120562, + -0.61297584, + -0.6138332, + -0.6146283, + -0.6153612, + -0.61603194, + -0.6166407, + -0.6171873, + -0.61767197, + -0.61809474, + -0.6184557, + -0.6187549, + -0.6189925, + -0.6191686, + -0.61928314, + -0.6193364, + -0.61932844, + -0.6192593, + -0.61912924, + -0.6189382, + -0.6186865, + -0.6183741, + -0.61800134, + -0.6175682, + -0.6170749, + -0.6165216, + -0.6159084, + -0.6152355, + -0.6145031, + -0.61371136, + -0.61286044, + -0.6119506, + -0.61098194, + -0.6099547, + -0.6088691, + -0.6077252, + -0.60652333, + -0.6052638, + -0.6039467, + -0.60257226, + -0.60114074, + -0.59965235, + -0.59810734, + -0.596506, + -0.59484845, + -0.5931352, + -0.5913662, + -0.58954185, + -0.5876624, + -0.58572817, + -0.5837394, + -0.5816963, + -0.57959926, + -0.57744855, + -0.57524437, + -0.5729872, + -0.5706771, + -0.5683146, + -0.56589985, + -0.56343323, + -0.56091505, + -0.5583457, + -0.55572534, + -0.55305445, + -0.5503333, + -0.54756224, + -0.5447416, + -0.5418717, + -0.538953, + -0.53598577, + -0.5329703, + -0.5299071, + -0.5267964, + -0.52363867, + -0.5204342, + -0.5171835, + -0.5138867, + -0.5105444, + -0.5071569, + -0.50372463, + -0.50024796, + -0.49672726, + -0.49316296, + -0.4895555, + -0.48590523, + -0.4822125, + -0.4784778, + -0.4747016, + -0.4708842, + -0.46702614, + -0.46312764, + -0.4591894, + -0.45521158, + -0.45119482, + -0.44713953, + -0.443046, + -0.43891484, + -0.4347463, + -0.43054107, + -0.42629936, + -0.42202187, + -0.41770887, + -0.41336077, + -0.4089782, + -0.40456146, + -0.4001112, + -0.39562765, + -0.39111152, + -0.386563, + -0.3819829, + -0.37737152, + -0.37272915, + -0.36805663, + -0.3633541, + -0.35862234, + -0.35386148, + -0.34907243, + -0.34425542, + -0.33941084, + -0.33453944, + -0.32964146, + -0.32471767, + -0.31976822, + -0.31479397, + -0.30979526, + -0.30477235, + -0.2997262, + -0.2946568, + -0.28956515, + -0.28445137, + -0.27931622, + -0.27416015, + -0.2689834, + -0.26378685, + -0.25857073, + -0.25333577, + -0.24808227, + -0.24281093, + -0.23752218, + -0.23221639, + -0.22689435, + -0.22155629, + -0.21620297, + -0.21083464, + -0.20545211, + -0.20005576, + -0.1946459, + -0.1892234, + -0.18378845, + -0.17834187, + -0.17288387, + -0.16741522, + -0.1619362, + -0.15644765, + -0.1509498, + -0.14544316, + -0.13992846, + -0.13440588, + -0.12887631, + -0.12333997, + -0.11779759, + -0.11224961, + -0.10669634, + -0.10113861, + -0.09557661, + -0.090011194, + -0.08444251, + -0.07887141, + -0.07329822, + -0.0677233, + -0.062147487, + -0.05657092, + -0.050994486, + -0.045418303, + -0.03984321, + -0.03426957, + -0.028697694, + -0.02312842, + -0.01756189, + -0.011998941, + -0.006439733, + -8.8511297E-4, + 0.0046646465, + 0.010209193, + 0.01574771, + 0.021280045, + 0.026805388, + 0.03232361, + 0.03783385, + 0.043335855, + 0.048829276, + 0.054313313, + 0.059787843, + 0.065252066, + 0.07070583, + 0.076148346, + 0.08157948, + 0.086998455, + 0.09240496, + 0.09779871, + 0.10317892, + 0.10854547, + 0.113897584, + 0.119235136, + 0.124557376, + 0.12986399, + 0.13515474, + 0.14042884, + 0.14568618, + 0.15092604, + 0.15614825, + 0.16135214, + 0.16653739, + 0.17170376, + 0.17685051, + 0.18197754, + 0.18708415, + 0.19217022, + 0.19723503, + 0.20227836, + 0.20729993, + 0.21229906, + 0.21727566, + 0.22222905, + 0.22715911, + 0.2320652, + 0.23694706, + 0.24180447, + 0.24663676, + 0.25144386, + 0.2562251, + 0.26098046, + 0.26570922, + 0.27041134, + 0.2750862, + 0.27973357, + 0.2843533, + 0.28894466, + 0.2935077, + 0.29804176, + 0.3025468, + 0.30702218, + 0.3114678, + 0.3158834, + 0.32026842, + 0.32462284, + 0.32894605, + 0.33323807, + 0.33749825, + 0.3417265, + 0.34592265, + 0.35008612, + 0.3542169, + 0.35831448, + 0.36237884, + 0.36640942, + 0.37040612, + 0.37436876, + 0.37829688, + 0.38219044, + 0.38604894, + 0.38987243, + 0.3936604, + 0.39741272, + 0.40112928, + 0.40480965, + 0.4084538, + 0.41206127, + 0.41563213, + 0.41916594, + 0.42266256, + 0.42612192, + 0.4295436, + 0.43292767, + 0.43627366, + 0.4395816, + 0.4428512, + 0.44608238, + 0.44927484, + 0.45242846, + 0.45554322, + 0.4586188, + 0.46165514, + 0.46465197, + 0.46760935, + 0.47052693, + 0.47340468, + 0.47624254, + 0.47904027, + 0.48179784, + 0.484515, + 0.48719186, + 0.48982808, + 0.49242365, + 0.4949786, + 0.49749267, + 0.49996588, + 0.5023981, + 0.50478923, + 0.5071392, + 0.50944793, + 0.51171553, + 0.5139417, + 0.5161266, + 0.51826996, + 0.520372, + 0.5224324, + 0.52445126, + 0.52642864, + 0.5283643, + 0.5302585, + 0.5321109, + 0.53392184, + 0.535691, + 0.53741854, + 0.53910446, + 0.5407487, + 0.54235137, + 0.5439123, + 0.5454318, + 0.5469096, + 0.5483459, + 0.54974073, + 0.5510941, + 0.5524061, + 0.5536766, + 0.5549059, + 0.5560939, + 0.55724066, + 0.55834633, + 0.5594109, + 0.5604346, + 0.56141734, + 0.5623592, + 0.56326044, + 0.56412095, + 0.564941, + 0.5657205, + 0.5664598, + 0.5671588, + 0.56781775, + 0.5684367, + 0.5690158, + 0.56955516, + 0.5700549, + 0.5705152, + 0.57093614, + 0.571318, + 0.57166076, + 0.5719646, + 0.5722298, + 0.5724564, + 0.57264465, + 0.5727947, + 0.5729067, + 0.57298076, + 0.5730172, + 0.5730161, + 0.5729777, + 0.5729022, + 0.5727898, + 0.57264066, + 0.572455, + 0.572233, + 0.571975, + 0.571681, + 0.57135147, + 0.57098645, + 0.5705862, + 0.57015103, + 0.5696811, + 0.5691767, + 0.56863797, + 0.5680653, + 0.56745887, + 0.5668189, + 0.56614566, + 0.5654394, + 0.5647005, + 0.5639291, + 0.5631254, + 0.5622899, + 0.5614227, + 0.56052417, + 0.5595945, + 0.558634, + 0.557643, + 0.55662185, + 0.5555707, + 0.5544899, + 0.5533798, + 0.55224067, + 0.5510728, + 0.5498765, + 0.5486521, + 0.54739994, + 0.5461203, + 0.54481345, + 0.54347986, + 0.5421196, + 0.5407333, + 0.5393211, + 0.5378834, + 0.5364205, + 0.53493273, + 0.5334205, + 0.5318841, + 0.53032386, + 0.52874005, + 0.5271332, + 0.5255036, + 0.5238516, + 0.52217746, + 0.5204815, + 0.5187644, + 0.5170262, + 0.5152674, + 0.5134883, + 0.5116892, + 0.50987065, + 0.508033, + 0.50617653, + 0.5043015, + 0.50240856, + 0.50049794, + 0.49857005, + 0.4966252, + 0.49466375, + 0.49268624, + 0.49069294, + 0.4886843, + 0.4866605, + 0.48462224, + 0.48256972, + 0.48050338, + 0.4784236, + 0.47633064, + 0.47422513, + 0.47210735, + 0.4699777, + 0.46783656, + 0.46568424, + 0.4635213, + 0.46134812, + 0.459165, + 0.45697227, + 0.45477057, + 0.45256016, + 0.45034143, + 0.4481148, + 0.44588056, + 0.44363937, + 0.44139144, + 0.43913722, + 0.4368771, + 0.43461132, + 0.43234062, + 0.4300652, + 0.4277855, + 0.42550176, + 0.42321464, + 0.42092448, + 0.41863158, + 0.41633642, + 0.41403922, + 0.4117407, + 0.40944102, + 0.4071407, + 0.40483993, + 0.40253943, + 0.4002394, + 0.39794028, + 0.39564246, + 0.39334616, + 0.39105213, + 0.38876054, + 0.38647184, + 0.38418642, + 0.3819045, + 0.37962675, + 0.37735346, + 0.375085, + 0.3728216, + 0.37056392, + 0.3683122, + 0.3660669, + 0.36382833, + 0.36159673, + 0.3593728, + 0.35715672, + 0.35494894, + 0.35274976, + 0.35055947, + 0.34837872, + 0.34620768, + 0.34404677, + 0.34189624, + 0.33975667, + 0.33762833, + 0.33551157, + 0.33340672, + 0.33131406, + 0.32923415, + 0.32716727, + 0.32511374, + 0.3230738, + 0.32104802, + 0.31903663, + 0.31704, + 0.31505844, + 0.31309217, + 0.3111418, + 0.3092075, + 0.3072896, + 0.30538848, + 0.30350432, + 0.30163765, + 0.2997887, + 0.2979578, + 0.29614517, + 0.2943513, + 0.2925764, + 0.29082078, + 0.28908476, + 0.28736854, + 0.2856726, + 0.28399718, + 0.28234252, + 0.28070894, + 0.27909663, + 0.27750605, + 0.2759374, + 0.274391, + 0.27286693, + 0.27136576, + 0.26988757, + 0.2684327, + 0.2670014, + 0.26559377, + 0.26421034, + 0.2628512, + 0.26151666, + 0.26020694, + 0.2589222, + 0.2576628, + 0.256429, + 0.25522092, + 0.25403875, + 0.2528829, + 0.2517535, + 0.25065076, + 0.24957488, + 0.24852604, + 0.24750455, + 0.24651055, + 0.24554424, + 0.24460578, + 0.24369545, + 0.24281341, + 0.24195981, + 0.24113485, + 0.24033865, + 0.2395715, + 0.2388335, + 0.23812482, + 0.23744562, + 0.23679602, + 0.23617625, + 0.23558642, + 0.23502669, + 0.23449713, + 0.23399799, + 0.23352933, + 0.23309131, + 0.23268403, + 0.2323076, + 0.23196217, + 0.23164786, + 0.23136476, + 0.23111296, + 0.23089255, + 0.23070367, + 0.23054639, + 0.2304208, + 0.23032697, + 0.23026499, + 0.23023494, + 0.23023686, + 0.23027086, + 0.23033696, + 0.23043525, + 0.23056577, + 0.23072857, + 0.2309237, + 0.23115118, + 0.23141105, + 0.23170336, + 0.23202811, + 0.23238538, + 0.23277512, + 0.23319736, + 0.23365213, + 0.23413943, + 0.23465927, + 0.23521163, + 0.23579648, + 0.23641384, + 0.23706372, + 0.23774603, + 0.23846078, + 0.23920794, + 0.23998748, + 0.2407994, + 0.24164356, + 0.24251997, + 0.24342859, + 0.24436933, + 0.24534222, + 0.24634707, + 0.24738385, + 0.24845251, + 0.24955302, + 0.2506852, + 0.251849, + 0.25304434, + 0.2542711, + 0.25552928, + 0.25681862, + 0.25813913, + 0.2594906, + 0.2608731, + 0.2622863, + 0.26373014, + 0.26520452, + 0.2667093, + 0.26824442, + 0.26980954, + 0.27140468, + 0.27302963, + 0.27468422, + 0.27636844, + 0.2780819, + 0.27982455, + 0.2815962, + 0.2833968, + 0.285226, + 0.2870836, + 0.28896955, + 0.29088354, + 0.2928256, + 0.29479524, + 0.2967924, + 0.29881683, + 0.30086836, + 0.3029469, + 0.30505195, + 0.30718344, + 0.30934116, + 0.311525, + 0.31373444, + 0.31596938, + 0.31822962, + 0.3205149, + 0.32282504, + 0.3251596, + 0.32751846, + 0.32990134, + 0.33230796, + 0.3347382, + 0.33719152, + 0.33966783, + 0.34216678, + 0.34468827, + 0.34723172, + 0.349797, + 0.35238382, + 0.35499188, + 0.35762107, + 0.36027074, + 0.36294073, + 0.36563078, + 0.36834073, + 0.37106994, + 0.37381825, + 0.37658536, + 0.37937093, + 0.38217482, + 0.38499635, + 0.38783535, + 0.39069155, + 0.39356455, + 0.39645422, + 0.39935985, + 0.40228128, + 0.40521815, + 0.4081703, + 0.41113704, + 0.41411817, + 0.41711336, + 0.42012224, + 0.4231446, + 0.42617974, + 0.42922747, + 0.43228742, + 0.43535924, + 0.43844274, + 0.4415371, + 0.44464225, + 0.44775772, + 0.45088333, + 0.45401835, + 0.45716256, + 0.4603156, + 0.46347702, + 0.46664667, + 0.46982375, + 0.47300807, + 0.47619924, + 0.47939703, + 0.4826007, + 0.48580995, + 0.4890245, + 0.4922438, + 0.49546775, + 0.49869552, + 0.5019269, + 0.50516146, + 0.50839883, + 0.51163876, + 0.51488036, + 0.51812357, + 0.5213679, + 0.5246131, + 0.5278584, + 0.5311035, + 0.5343481, + 0.53759164, + 0.540834, + 0.5440743, + 0.5473124, + 0.5505478, + 0.55378, + 0.5570089, + 0.5602337, + 0.5634541, + 0.5666696, + 0.56988007, + 0.57308465, + 0.5762831, + 0.57947505, + 0.58266, + 0.5858377, + 0.58900744, + 0.59216887, + 0.59532154, + 0.5984653, + 0.60159934, + 0.6047234, + 0.60783696, + 0.6109397, + 0.6140313, + 0.617111, + 0.6201786, + 0.62323356, + 0.6262755, + 0.6293042, + 0.63231885, + 0.6353192, + 0.63830477, + 0.6412754, + 0.6442303, + 0.6471691, + 0.6500916, + 0.65299714, + 0.65588564, + 0.6587562, + 0.66160864, + 0.66444254, + 0.6672575, + 0.67005324, + 0.672829, + 0.6755845, + 0.6783194, + 0.68103343, + 0.68372583, + 0.68639636, + 0.6890446, + 0.6916701, + 0.69427276, + 0.6968517, + 0.69940674, + 0.7019375, + 0.7044435, + 0.7069246, + 0.70938003, + 0.7118096, + 0.71421283, + 0.7165895, + 0.718939, + 0.7212611, + 0.72355527, + 0.72582126, + 0.72805876, + 0.7302671, + 0.73244613, + 0.7345954, + 0.7367147, + 0.73880345, + 0.7408613, + 0.742888, + 0.744883, + 0.7468463, + 0.74877715, + 0.7506754, + 0.75254065, + 0.75437254, + 0.7561708, + 0.757935, + 0.7596648, + 0.7613599, + 0.76302, + 0.7646446, + 0.76623356, + 0.7677865, + 0.769303, + 0.770783, + 0.77222586, + 0.7736314, + 0.7749994, + 0.7763294, + 0.77762127, + 0.7788745, + 0.7800889, + 0.78126425, + 0.7824002, + 0.7834963, + 0.7845525 + ], + "x": [ + -4.0, + -3.996, + -3.992, + -3.988, + -3.984, + -3.98, + -3.976, + -3.972, + -3.968, + -3.964, + -3.96, + -3.956, + -3.952, + -3.948, + -3.944, + -3.94, + -3.936, + -3.932, + -3.928, + -3.924, + -3.92, + -3.916, + -3.912, + -3.908, + -3.904, + -3.9, + -3.896, + -3.892, + -3.888, + -3.884, + -3.88, + -3.876, + -3.872, + -3.868, + -3.864, + -3.86, + -3.856, + -3.852, + -3.848, + -3.844, + -3.84, + -3.836, + -3.832, + -3.828, + -3.824, + -3.82, + -3.816, + -3.812, + -3.808, + -3.804, + -3.8, + -3.796, + -3.792, + -3.788, + -3.784, + -3.78, + -3.776, + -3.772, + -3.768, + -3.764, + -3.76, + -3.756, + -3.752, + -3.748, + -3.744, + -3.74, + -3.736, + -3.732, + -3.728, + -3.724, + -3.72, + -3.716, + -3.712, + -3.708, + -3.704, + -3.7, + -3.696, + -3.692, + -3.688, + -3.684, + -3.68, + -3.676, + -3.672, + -3.668, + -3.664, + -3.66, + -3.656, + -3.652, + -3.648, + -3.644, + -3.64, + -3.636, + -3.632, + -3.628, + -3.624, + -3.62, + -3.616, + -3.612, + -3.608, + -3.604, + -3.6, + -3.596, + -3.592, + -3.588, + -3.584, + -3.58, + -3.576, + -3.572, + -3.568, + -3.564, + -3.56, + -3.556, + -3.552, + -3.548, + -3.544, + -3.54, + -3.536, + -3.532, + -3.528, + -3.524, + -3.52, + -3.516, + -3.512, + -3.508, + -3.504, + -3.5, + -3.496, + -3.492, + -3.488, + -3.484, + -3.48, + -3.476, + -3.472, + -3.468, + -3.464, + -3.46, + -3.456, + -3.452, + -3.448, + -3.444, + -3.44, + -3.436, + -3.432, + -3.428, + -3.424, + -3.42, + -3.416, + -3.412, + -3.408, + -3.404, + -3.4, + -3.396, + -3.392, + -3.388, + -3.384, + -3.38, + -3.376, + -3.372, + -3.368, + -3.364, + -3.36, + -3.356, + -3.352, + -3.348, + -3.344, + -3.34, + -3.336, + -3.332, + -3.328, + -3.324, + -3.32, + -3.316, + -3.312, + -3.308, + -3.304, + -3.3, + -3.296, + -3.292, + -3.288, + -3.284, + -3.28, + -3.276, + -3.272, + -3.268, + -3.264, + -3.26, + -3.256, + -3.252, + -3.248, + -3.244, + -3.24, + -3.236, + -3.232, + -3.228, + -3.224, + -3.22, + -3.216, + -3.212, + -3.208, + -3.204, + -3.2, + -3.196, + -3.192, + -3.188, + -3.184, + -3.18, + -3.176, + -3.172, + -3.168, + -3.164, + -3.16, + -3.156, + -3.152, + -3.148, + -3.144, + -3.14, + -3.136, + -3.132, + -3.128, + -3.124, + -3.12, + -3.116, + -3.112, + -3.108, + -3.104, + -3.1, + -3.096, + -3.092, + -3.088, + -3.084, + -3.08, + -3.076, + -3.072, + -3.068, + -3.064, + -3.06, + -3.056, + -3.052, + -3.048, + -3.044, + -3.04, + -3.036, + -3.032, + -3.028, + -3.024, + -3.02, + -3.016, + -3.012, + -3.008, + -3.004, + -3.0, + -2.996, + -2.992, + -2.988, + -2.984, + -2.98, + -2.976, + -2.972, + -2.968, + -2.964, + -2.96, + -2.956, + -2.952, + -2.948, + -2.944, + -2.94, + -2.936, + -2.932, + -2.928, + -2.924, + -2.92, + -2.916, + -2.912, + -2.908, + -2.904, + -2.9, + -2.896, + -2.892, + -2.888, + -2.884, + -2.88, + -2.876, + -2.872, + -2.868, + -2.864, + -2.86, + -2.856, + -2.852, + -2.848, + -2.844, + -2.84, + -2.836, + -2.832, + -2.828, + -2.824, + -2.82, + -2.816, + -2.812, + -2.808, + -2.804, + -2.8, + -2.796, + -2.792, + -2.788, + -2.784, + -2.78, + -2.776, + -2.772, + -2.768, + -2.764, + -2.76, + -2.756, + -2.752, + -2.748, + -2.744, + -2.74, + -2.736, + -2.732, + -2.728, + -2.724, + -2.72, + -2.716, + -2.712, + -2.708, + -2.704, + -2.7, + -2.696, + -2.692, + -2.688, + -2.684, + -2.68, + -2.676, + -2.672, + -2.668, + -2.664, + -2.66, + -2.656, + -2.652, + -2.648, + -2.644, + -2.64, + -2.636, + -2.632, + -2.628, + -2.624, + -2.62, + -2.616, + -2.612, + -2.608, + -2.604, + -2.6, + -2.596, + -2.592, + -2.588, + -2.584, + -2.58, + -2.576, + -2.572, + -2.568, + -2.564, + -2.56, + -2.556, + -2.552, + -2.548, + -2.544, + -2.54, + -2.536, + -2.532, + -2.528, + -2.524, + -2.52, + -2.516, + -2.512, + -2.508, + -2.504, + -2.5, + -2.496, + -2.492, + -2.488, + -2.484, + -2.48, + -2.476, + -2.472, + -2.468, + -2.464, + -2.46, + -2.456, + -2.452, + -2.448, + -2.444, + -2.44, + -2.436, + -2.432, + -2.428, + -2.424, + -2.42, + -2.416, + -2.412, + -2.408, + -2.404, + -2.4, + -2.396, + -2.392, + -2.388, + -2.384, + -2.38, + -2.376, + -2.372, + -2.368, + -2.364, + -2.36, + -2.356, + -2.352, + -2.348, + -2.344, + -2.34, + -2.336, + -2.332, + -2.328, + -2.324, + -2.32, + -2.316, + -2.312, + -2.308, + -2.304, + -2.3, + -2.296, + -2.292, + -2.288, + -2.284, + -2.28, + -2.276, + -2.272, + -2.268, + -2.264, + -2.26, + -2.256, + -2.252, + -2.248, + -2.244, + -2.24, + -2.236, + -2.232, + -2.228, + -2.224, + -2.22, + -2.216, + -2.212, + -2.208, + -2.204, + -2.2, + -2.196, + -2.192, + -2.188, + -2.184, + -2.18, + -2.176, + -2.172, + -2.168, + -2.164, + -2.16, + -2.156, + -2.152, + -2.148, + -2.144, + -2.14, + -2.136, + -2.132, + -2.128, + -2.124, + -2.12, + -2.116, + -2.112, + -2.108, + -2.104, + -2.1, + -2.096, + -2.092, + -2.088, + -2.084, + -2.08, + -2.076, + -2.072, + -2.068, + -2.064, + -2.06, + -2.056, + -2.052, + -2.048, + -2.044, + -2.04, + -2.036, + -2.032, + -2.028, + -2.024, + -2.02, + -2.016, + -2.012, + -2.008, + -2.004, + -2.0, + -1.996, + -1.992, + -1.988, + -1.984, + -1.98, + -1.976, + -1.972, + -1.968, + -1.964, + -1.96, + -1.956, + -1.952, + -1.948, + -1.944, + -1.94, + -1.936, + -1.932, + -1.928, + -1.924, + -1.92, + -1.916, + -1.912, + -1.908, + -1.904, + -1.9, + -1.896, + -1.892, + -1.888, + -1.884, + -1.88, + -1.876, + -1.872, + -1.868, + -1.864, + -1.86, + -1.856, + -1.852, + -1.848, + -1.844, + -1.84, + -1.836, + -1.832, + -1.828, + -1.824, + -1.82, + -1.816, + -1.812, + -1.808, + -1.804, + -1.8, + -1.796, + -1.792, + -1.788, + -1.784, + -1.78, + -1.776, + -1.772, + -1.768, + -1.764, + -1.76, + -1.756, + -1.752, + -1.748, + -1.744, + -1.74, + -1.736, + -1.732, + -1.728, + -1.724, + -1.72, + -1.716, + -1.712, + -1.708, + -1.704, + -1.7, + -1.696, + -1.692, + -1.688, + -1.684, + -1.68, + -1.676, + -1.672, + -1.668, + -1.664, + -1.66, + -1.656, + -1.652, + -1.648, + -1.644, + -1.64, + -1.636, + -1.632, + -1.628, + -1.624, + -1.62, + -1.616, + -1.612, + -1.608, + -1.604, + -1.6, + -1.596, + -1.592, + -1.588, + -1.584, + -1.58, + -1.576, + -1.572, + -1.568, + -1.564, + -1.56, + -1.556, + -1.552, + -1.548, + -1.544, + -1.54, + -1.536, + -1.532, + -1.528, + -1.524, + -1.52, + -1.516, + -1.512, + -1.508, + -1.504, + -1.5, + -1.496, + -1.492, + -1.488, + -1.484, + -1.48, + -1.476, + -1.472, + -1.468, + -1.464, + -1.46, + -1.456, + -1.452, + -1.448, + -1.444, + -1.44, + -1.436, + -1.432, + -1.428, + -1.424, + -1.42, + -1.416, + -1.412, + -1.408, + -1.404, + -1.4, + -1.396, + -1.392, + -1.388, + -1.384, + -1.38, + -1.376, + -1.372, + -1.368, + -1.364, + -1.36, + -1.356, + -1.352, + -1.348, + -1.344, + -1.34, + -1.336, + -1.332, + -1.328, + -1.324, + -1.32, + -1.316, + -1.312, + -1.308, + -1.304, + -1.3, + -1.296, + -1.292, + -1.288, + -1.284, + -1.28, + -1.276, + -1.272, + -1.268, + -1.264, + -1.26, + -1.256, + -1.252, + -1.248, + -1.244, + -1.24, + -1.236, + -1.232, + -1.228, + -1.224, + -1.22, + -1.216, + -1.212, + -1.208, + -1.204, + -1.2, + -1.196, + -1.192, + -1.188, + -1.184, + -1.18, + -1.176, + -1.172, + -1.168, + -1.164, + -1.16, + -1.156, + -1.152, + -1.148, + -1.144, + -1.14, + -1.136, + -1.132, + -1.128, + -1.124, + -1.12, + -1.116, + -1.112, + -1.108, + -1.104, + -1.1, + -1.096, + -1.092, + -1.088, + -1.084, + -1.08, + -1.076, + -1.072, + -1.068, + -1.064, + -1.06, + -1.056, + -1.052, + -1.048, + -1.044, + -1.04, + -1.036, + -1.032, + -1.028, + -1.024, + -1.02, + -1.016, + -1.012, + -1.008, + -1.004, + -1.0, + -0.996, + -0.992, + -0.988, + -0.984, + -0.98, + -0.976, + -0.972, + -0.968, + -0.964, + -0.96, + -0.956, + -0.952, + -0.948, + -0.944, + -0.94, + -0.936, + -0.932, + -0.928, + -0.924, + -0.92, + -0.916, + -0.912, + -0.908, + -0.904, + -0.9, + -0.896, + -0.892, + -0.888, + -0.884, + -0.88, + -0.876, + -0.872, + -0.868, + -0.864, + -0.86, + -0.856, + -0.852, + -0.848, + -0.844, + -0.84, + -0.836, + -0.832, + -0.828, + -0.824, + -0.82, + -0.816, + -0.812, + -0.808, + -0.804, + -0.8, + -0.796, + -0.792, + -0.788, + -0.784, + -0.78, + -0.776, + -0.772, + -0.768, + -0.764, + -0.76, + -0.756, + -0.752, + -0.748, + -0.744, + -0.74, + -0.736, + -0.732, + -0.728, + -0.724, + -0.72, + -0.716, + -0.712, + -0.708, + -0.704, + -0.7, + -0.696, + -0.692, + -0.688, + -0.684, + -0.68, + -0.676, + -0.672, + -0.668, + -0.664, + -0.66, + -0.656, + -0.652, + -0.648, + -0.644, + -0.64, + -0.636, + -0.632, + -0.628, + -0.624, + -0.62, + -0.616, + -0.612, + -0.608, + -0.604, + -0.6, + -0.596, + -0.592, + -0.588, + -0.584, + -0.58, + -0.576, + -0.572, + -0.568, + -0.564, + -0.56, + -0.556, + -0.552, + -0.548, + -0.544, + -0.54, + -0.536, + -0.532, + -0.528, + -0.524, + -0.52, + -0.516, + -0.512, + -0.508, + -0.504, + -0.5, + -0.496, + -0.492, + -0.488, + -0.484, + -0.48, + -0.476, + -0.472, + -0.468, + -0.464, + -0.46, + -0.456, + -0.452, + -0.448, + -0.444, + -0.44, + -0.436, + -0.432, + -0.428, + -0.424, + -0.42, + -0.416, + -0.412, + -0.408, + -0.404, + -0.4, + -0.396, + -0.392, + -0.388, + -0.384, + -0.38, + -0.376, + -0.372, + -0.368, + -0.364, + -0.36, + -0.356, + -0.352, + -0.348, + -0.344, + -0.34, + -0.336, + -0.332, + -0.328, + -0.324, + -0.32, + -0.316, + -0.312, + -0.308, + -0.304, + -0.3, + -0.296, + -0.292, + -0.288, + -0.284, + -0.28, + -0.276, + -0.272, + -0.268, + -0.264, + -0.26, + -0.256, + -0.252, + -0.248, + -0.244, + -0.24, + -0.236, + -0.232, + -0.228, + -0.224, + -0.22, + -0.216, + -0.212, + -0.208, + -0.204, + -0.2, + -0.196, + -0.192, + -0.188, + -0.184, + -0.18, + -0.176, + -0.172, + -0.168, + -0.164, + -0.16, + -0.156, + -0.152, + -0.148, + -0.144, + -0.14, + -0.136, + -0.132, + -0.128, + -0.124, + -0.12, + -0.116, + -0.112, + -0.108, + -0.104, + -0.1, + -0.096, + -0.092, + -0.088, + -0.084, + -0.08, + -0.076, + -0.072, + -0.068, + -0.064, + -0.06, + -0.056, + -0.052, + -0.048, + -0.044, + -0.04, + -0.036, + -0.032, + -0.028, + -0.024, + -0.02, + -0.016, + -0.012, + -0.008, + -0.004, + 0.0, + 0.004, + 0.008, + 0.012, + 0.016, + 0.02, + 0.024, + 0.028, + 0.032, + 0.036, + 0.04, + 0.044, + 0.048, + 0.052, + 0.056, + 0.06, + 0.064, + 0.068, + 0.072, + 0.076, + 0.08, + 0.084, + 0.088, + 0.092, + 0.096, + 0.1, + 0.104, + 0.108, + 0.112, + 0.116, + 0.12, + 0.124, + 0.128, + 0.132, + 0.136, + 0.14, + 0.144, + 0.148, + 0.152, + 0.156, + 0.16, + 0.164, + 0.168, + 0.172, + 0.176, + 0.18, + 0.184, + 0.188, + 0.192, + 0.196, + 0.2, + 0.204, + 0.208, + 0.212, + 0.216, + 0.22, + 0.224, + 0.228, + 0.232, + 0.236, + 0.24, + 0.244, + 0.248, + 0.252, + 0.256, + 0.26, + 0.264, + 0.268, + 0.272, + 0.276, + 0.28, + 0.284, + 0.288, + 0.292, + 0.296, + 0.3, + 0.304, + 0.308, + 0.312, + 0.316, + 0.32, + 0.324, + 0.328, + 0.332, + 0.336, + 0.34, + 0.344, + 0.348, + 0.352, + 0.356, + 0.36, + 0.364, + 0.368, + 0.372, + 0.376, + 0.38, + 0.384, + 0.388, + 0.392, + 0.396, + 0.4, + 0.404, + 0.408, + 0.412, + 0.416, + 0.42, + 0.424, + 0.428, + 0.432, + 0.436, + 0.44, + 0.444, + 0.448, + 0.452, + 0.456, + 0.46, + 0.464, + 0.468, + 0.472, + 0.476, + 0.48, + 0.484, + 0.488, + 0.492, + 0.496, + 0.5, + 0.504, + 0.508, + 0.512, + 0.516, + 0.52, + 0.524, + 0.528, + 0.532, + 0.536, + 0.54, + 0.544, + 0.548, + 0.552, + 0.556, + 0.56, + 0.564, + 0.568, + 0.572, + 0.576, + 0.58, + 0.584, + 0.588, + 0.592, + 0.596, + 0.6, + 0.604, + 0.608, + 0.612, + 0.616, + 0.62, + 0.624, + 0.628, + 0.632, + 0.636, + 0.64, + 0.644, + 0.648, + 0.652, + 0.656, + 0.66, + 0.664, + 0.668, + 0.672, + 0.676, + 0.68, + 0.684, + 0.688, + 0.692, + 0.696, + 0.7, + 0.704, + 0.708, + 0.712, + 0.716, + 0.72, + 0.724, + 0.728, + 0.732, + 0.736, + 0.74, + 0.744, + 0.748, + 0.752, + 0.756, + 0.76, + 0.764, + 0.768, + 0.772, + 0.776, + 0.78, + 0.784, + 0.788, + 0.792, + 0.796, + 0.8, + 0.804, + 0.808, + 0.812, + 0.816, + 0.82, + 0.824, + 0.828, + 0.832, + 0.836, + 0.84, + 0.844, + 0.848, + 0.852, + 0.856, + 0.86, + 0.864, + 0.868, + 0.872, + 0.876, + 0.88, + 0.884, + 0.888, + 0.892, + 0.896, + 0.9, + 0.904, + 0.908, + 0.912, + 0.916, + 0.92, + 0.924, + 0.928, + 0.932, + 0.936, + 0.94, + 0.944, + 0.948, + 0.952, + 0.956, + 0.96, + 0.964, + 0.968, + 0.972, + 0.976, + 0.98, + 0.984, + 0.988, + 0.992, + 0.996, + 1.0, + 1.004, + 1.008, + 1.012, + 1.016, + 1.02, + 1.024, + 1.028, + 1.032, + 1.036, + 1.04, + 1.044, + 1.048, + 1.052, + 1.056, + 1.06, + 1.064, + 1.068, + 1.072, + 1.076, + 1.08, + 1.084, + 1.088, + 1.092, + 1.096, + 1.1, + 1.104, + 1.108, + 1.112, + 1.116, + 1.12, + 1.124, + 1.128, + 1.132, + 1.136, + 1.14, + 1.144, + 1.148, + 1.152, + 1.156, + 1.16, + 1.164, + 1.168, + 1.172, + 1.176, + 1.18, + 1.184, + 1.188, + 1.192, + 1.196, + 1.2, + 1.204, + 1.208, + 1.212, + 1.216, + 1.22, + 1.224, + 1.228, + 1.232, + 1.236, + 1.24, + 1.244, + 1.248, + 1.252, + 1.256, + 1.26, + 1.264, + 1.268, + 1.272, + 1.276, + 1.28, + 1.284, + 1.288, + 1.292, + 1.296, + 1.3, + 1.304, + 1.308, + 1.312, + 1.316, + 1.32, + 1.324, + 1.328, + 1.332, + 1.336, + 1.34, + 1.344, + 1.348, + 1.352, + 1.356, + 1.36, + 1.364, + 1.368, + 1.372, + 1.376, + 1.38, + 1.384, + 1.388, + 1.392, + 1.396, + 1.4, + 1.404, + 1.408, + 1.412, + 1.416, + 1.42, + 1.424, + 1.428, + 1.432, + 1.436, + 1.44, + 1.444, + 1.448, + 1.452, + 1.456, + 1.46, + 1.464, + 1.468, + 1.472, + 1.476, + 1.48, + 1.484, + 1.488, + 1.492, + 1.496, + 1.5, + 1.504, + 1.508, + 1.512, + 1.516, + 1.52, + 1.524, + 1.528, + 1.532, + 1.536, + 1.54, + 1.544, + 1.548, + 1.552, + 1.556, + 1.56, + 1.564, + 1.568, + 1.572, + 1.576, + 1.58, + 1.584, + 1.588, + 1.592, + 1.596, + 1.6, + 1.604, + 1.608, + 1.612, + 1.616, + 1.62, + 1.624, + 1.628, + 1.632, + 1.636, + 1.64, + 1.644, + 1.648, + 1.652, + 1.656, + 1.66, + 1.664, + 1.668, + 1.672, + 1.676, + 1.68, + 1.684, + 1.688, + 1.692, + 1.696, + 1.7, + 1.704, + 1.708, + 1.712, + 1.716, + 1.72, + 1.724, + 1.728, + 1.732, + 1.736, + 1.74, + 1.744, + 1.748, + 1.752, + 1.756, + 1.76, + 1.764, + 1.768, + 1.772, + 1.776, + 1.78, + 1.784, + 1.788, + 1.792, + 1.796, + 1.8, + 1.804, + 1.808, + 1.812, + 1.816, + 1.82, + 1.824, + 1.828, + 1.832, + 1.836, + 1.84, + 1.844, + 1.848, + 1.852, + 1.856, + 1.86, + 1.864, + 1.868, + 1.872, + 1.876, + 1.88, + 1.884, + 1.888, + 1.892, + 1.896, + 1.9, + 1.904, + 1.908, + 1.912, + 1.916, + 1.92, + 1.924, + 1.928, + 1.932, + 1.936, + 1.94, + 1.944, + 1.948, + 1.952, + 1.956, + 1.96, + 1.964, + 1.968, + 1.972, + 1.976, + 1.98, + 1.984, + 1.988, + 1.992, + 1.996, + 2.0, + 2.004, + 2.008, + 2.012, + 2.016, + 2.02, + 2.024, + 2.028, + 2.032, + 2.036, + 2.04, + 2.044, + 2.048, + 2.052, + 2.056, + 2.06, + 2.064, + 2.068, + 2.072, + 2.076, + 2.08, + 2.084, + 2.088, + 2.092, + 2.096, + 2.1, + 2.104, + 2.108, + 2.112, + 2.116, + 2.12, + 2.124, + 2.128, + 2.132, + 2.136, + 2.14, + 2.144, + 2.148, + 2.152, + 2.156, + 2.16, + 2.164, + 2.168, + 2.172, + 2.176, + 2.18, + 2.184, + 2.188, + 2.192, + 2.196, + 2.2, + 2.204, + 2.208, + 2.212, + 2.216, + 2.22, + 2.224, + 2.228, + 2.232, + 2.236, + 2.24, + 2.244, + 2.248, + 2.252, + 2.256, + 2.26, + 2.264, + 2.268, + 2.272, + 2.276, + 2.28, + 2.284, + 2.288, + 2.292, + 2.296, + 2.3, + 2.304, + 2.308, + 2.312, + 2.316, + 2.32, + 2.324, + 2.328, + 2.332, + 2.336, + 2.34, + 2.344, + 2.348, + 2.352, + 2.356, + 2.36, + 2.364, + 2.368, + 2.372, + 2.376, + 2.38, + 2.384, + 2.388, + 2.392, + 2.396, + 2.4, + 2.404, + 2.408, + 2.412, + 2.416, + 2.42, + 2.424, + 2.428, + 2.432, + 2.436, + 2.44, + 2.444, + 2.448, + 2.452, + 2.456, + 2.46, + 2.464, + 2.468, + 2.472, + 2.476, + 2.48, + 2.484, + 2.488, + 2.492, + 2.496, + 2.5, + 2.504, + 2.508, + 2.512, + 2.516, + 2.52, + 2.524, + 2.528, + 2.532, + 2.536, + 2.54, + 2.544, + 2.548, + 2.552, + 2.556, + 2.56, + 2.564, + 2.568, + 2.572, + 2.576, + 2.58, + 2.584, + 2.588, + 2.592, + 2.596, + 2.6, + 2.604, + 2.608, + 2.612, + 2.616, + 2.62, + 2.624, + 2.628, + 2.632, + 2.636, + 2.64, + 2.644, + 2.648, + 2.652, + 2.656, + 2.66, + 2.664, + 2.668, + 2.672, + 2.676, + 2.68, + 2.684, + 2.688, + 2.692, + 2.696, + 2.7, + 2.704, + 2.708, + 2.712, + 2.716, + 2.72, + 2.724, + 2.728, + 2.732, + 2.736, + 2.74, + 2.744, + 2.748, + 2.752, + 2.756, + 2.76, + 2.764, + 2.768, + 2.772, + 2.776, + 2.78, + 2.784, + 2.788, + 2.792, + 2.796, + 2.8, + 2.804, + 2.808, + 2.812, + 2.816, + 2.82, + 2.824, + 2.828, + 2.832, + 2.836, + 2.84, + 2.844, + 2.848, + 2.852, + 2.856, + 2.86, + 2.864, + 2.868, + 2.872, + 2.876, + 2.88, + 2.884, + 2.888, + 2.892, + 2.896, + 2.9, + 2.904, + 2.908, + 2.912, + 2.916, + 2.92, + 2.924, + 2.928, + 2.932, + 2.936, + 2.94, + 2.944, + 2.948, + 2.952, + 2.956, + 2.96, + 2.964, + 2.968, + 2.972, + 2.976, + 2.98, + 2.984, + 2.988, + 2.992, + 2.996, + 3.0, + 3.004, + 3.008, + 3.012, + 3.016, + 3.02, + 3.024, + 3.028, + 3.032, + 3.036, + 3.04, + 3.044, + 3.048, + 3.052, + 3.056, + 3.06, + 3.064, + 3.068, + 3.072, + 3.076, + 3.08, + 3.084, + 3.088, + 3.092, + 3.096, + 3.1, + 3.104, + 3.108, + 3.112, + 3.116, + 3.12, + 3.124, + 3.128, + 3.132, + 3.136, + 3.14, + 3.144, + 3.148, + 3.152, + 3.156, + 3.16, + 3.164, + 3.168, + 3.172, + 3.176, + 3.18, + 3.184, + 3.188, + 3.192, + 3.196, + 3.2, + 3.204, + 3.208, + 3.212, + 3.216, + 3.22, + 3.224, + 3.228, + 3.232, + 3.236, + 3.24, + 3.244, + 3.248, + 3.252, + 3.256, + 3.26, + 3.264, + 3.268, + 3.272, + 3.276, + 3.28, + 3.284, + 3.288, + 3.292, + 3.296, + 3.3, + 3.304, + 3.308, + 3.312, + 3.316, + 3.32, + 3.324, + 3.328, + 3.332, + 3.336, + 3.34, + 3.344, + 3.348, + 3.352, + 3.356, + 3.36, + 3.364, + 3.368, + 3.372, + 3.376, + 3.38, + 3.384, + 3.388, + 3.392, + 3.396, + 3.4, + 3.404, + 3.408, + 3.412, + 3.416, + 3.42, + 3.424, + 3.428, + 3.432, + 3.436, + 3.44, + 3.444, + 3.448, + 3.452, + 3.456, + 3.46, + 3.464, + 3.468, + 3.472, + 3.476, + 3.48, + 3.484, + 3.488, + 3.492, + 3.496, + 3.5, + 3.504, + 3.508, + 3.512, + 3.516, + 3.52, + 3.524, + 3.528, + 3.532, + 3.536, + 3.54, + 3.544, + 3.548, + 3.552, + 3.556, + 3.56, + 3.564, + 3.568, + 3.572, + 3.576, + 3.58, + 3.584, + 3.588, + 3.592, + 3.596, + 3.6, + 3.604, + 3.608, + 3.612, + 3.616, + 3.62, + 3.624, + 3.628, + 3.632, + 3.636, + 3.64, + 3.644, + 3.648, + 3.652, + 3.656, + 3.66, + 3.664, + 3.668, + 3.672, + 3.676, + 3.68, + 3.684, + 3.688, + 3.692, + 3.696, + 3.7, + 3.704, + 3.708, + 3.712, + 3.716, + 3.72, + 3.724, + 3.728, + 3.732, + 3.736, + 3.74, + 3.744, + 3.748, + 3.752, + 3.756, + 3.76, + 3.764, + 3.768, + 3.772, + 3.776, + 3.78, + 3.784, + 3.788, + 3.792, + 3.796, + 3.8, + 3.804, + 3.808, + 3.812, + 3.816, + 3.82, + 3.824, + 3.828, + 3.832, + 3.836, + 3.84, + 3.844, + 3.848, + 3.852, + 3.856, + 3.86, + 3.864, + 3.868, + 3.872, + 3.876, + 3.88, + 3.884, + 3.888, + 3.892, + 3.896, + 3.9, + 3.904, + 3.908, + 3.912, + 3.916, + 3.92, + 3.924, + 3.928, + 3.932, + 3.936, + 3.94, + 3.944, + 3.948, + 3.952, + 3.956, + 3.96, + 3.964, + 3.968, + 3.972, + 3.976, + 3.98, + 3.984, + 3.988, + 3.992, + 3.996, + 4.0 + ] + }, + "sampling": "none", + "position": "identity", + "geom": "ribbon", + "fill": "#73c0de" + } + ] + }, + "apply_color_scheme": true, + "swing_enabled": true + } + }, + "metadata": {}, + "output_type": "execute_result", + "execution_count": 4 + } + ], + "source": [ + "plot {\n", + " ribbon { \n", + " x(xs)\n", + " yMin(yLow)\n", + " yMax(yHigh)\n", + " fillColor = Color.LIGHT_BLUE\n", + " }\n", + "}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T11:57:59.986511Z", + "start_time": "2023-12-07T11:57:59.695943Z" + } + }, + "execution_count": 4 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Kotlin", + "language": "kotlin", + "name": "kotlin" + }, + "language_info": { + "name": "kotlin", + "version": "1.9.0", + "mimetype": "text/x-kotlin", + "file_extension": ".kt", + "pygments_lexer": "kotlin", + "codemirror_mode": "text/x-kotlin", + "nbconvert_exporter": "" + }, + "ktnbPluginMetadata": { + "projectLibraries": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/lets-plot/samples/ribbon/ribbon_grouped.ipynb b/examples/notebooks/lets-plot/samples/ribbon/ribbon_grouped.ipynb new file mode 100644 index 00000000..fd8d670f --- /dev/null +++ b/examples/notebooks/lets-plot/samples/ribbon/ribbon_grouped.ipynb @@ -0,0 +1,618 @@ +{ + "cells": [ + { + "cell_type": "code", + "outputs": [], + "source": [ + "%use dataframe, kandy" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T12:22:58.393353Z", + "start_time": "2023-12-07T12:22:39.871949Z" + } + }, + "execution_count": 1 + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-07T12:38:31.705854Z", + "start_time": "2023-12-07T12:38:31.205956Z" + } + }, + "outputs": [], + "source": [ + "val times = listOf(\"00:00\", \"06:00\", \"12:00\", \"18:00\", \"24:00\")\n", + "val btcMin = listOf(310, 225, 202, 278, 360)\n", + "val btcMax = listOf(334, 307, 243, 293, 388)\n", + "val ethMin = listOf(180, 205, 256, 300, 280)\n", + "val ethMax = listOf(210, 234, 299, 322, 331)\n", + "\n", + "val dataset = dataFrameOf(\n", + " \"time\" to times + times,\n", + " \"min\" to btcMin + ethMin,\n", + " \"max\" to btcMax + ethMax,\n", + " \"currency\" to List(5) { \"btc\" } + List(5) { \"eth\" }\n", + ")" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 00:00\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 06:00\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 12:00\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 18:00\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 24:00\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 200\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 250\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 300\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 350\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 400\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " price, tokens\n", + " \n", + " \n", + " \n", + " \n", + " time\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " currency\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Bubble Tea\n", + " \n", + " \n", + " Coin\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " E-Traders\n", + " \n", + " \n", + " Hedgehogs\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " " + ], + "application/plot+json": { + "output_type": "lets_plot_spec", + "output": { + "mapping": {}, + "data": { + "&merged_groups": [ + "btc", + "btc", + "btc", + "btc", + "btc", + "eth", + "eth", + "eth", + "eth", + "eth" + ], + "min": [ + 310.0, + 225.0, + 202.0, + 278.0, + 360.0, + 180.0, + 205.0, + 256.0, + 300.0, + 280.0 + ], + "max": [ + 334.0, + 307.0, + 243.0, + 293.0, + 388.0, + 210.0, + 234.0, + 299.0, + 322.0, + 331.0 + ], + "currency": [ + "btc", + "btc", + "btc", + "btc", + "btc", + "eth", + "eth", + "eth", + "eth", + "eth" + ], + "time": [ + "00:00", + "06:00", + "12:00", + "18:00", + "24:00", + "00:00", + "06:00", + "12:00", + "18:00", + "24:00" + ] + }, + "kind": "plot", + "scales": [ + { + "aesthetic": "y", + "name": "price, tokens", + "limits": [ + 170.0, + 400.0 + ] + }, + { + "aesthetic": "x", + "discrete": true + }, + { + "aesthetic": "fill", + "discrete": true, + "breaks": [ + "btc", + "eth" + ], + "labels": [ + "Bubble Tea\nCoin", + "E-Traders\nHedgehogs" + ] + } + ], + "layers": [ + { + "mapping": { + "x": "time", + "ymin": "min", + "ymax": "max", + "fill": "currency", + "group": "&merged_groups" + }, + "stat": "identity", + "size": 0.0, + "sampling": "none", + "alpha": 0.6, + "position": "identity", + "geom": "ribbon" + } + ] + }, + "apply_color_scheme": true, + "swing_enabled": true + } + }, + "metadata": {}, + "output_type": "execute_result", + "execution_count": 10 + } + ], + "source": [ + "dataset.groupBy(\"currency\").plot { \n", + " ribbon { \n", + " x(\"time\")\n", + " y {\n", + " limits = 170..400\n", + " axis.name = \"price, tokens\"\n", + " }\n", + " yMin(\"min\")\n", + " yMax(\"max\")\n", + " fillColor(\"currency\") {\n", + " legend.breaksLabeled(\"btc\" to \"Bubble Tea\\nCoin\", \"eth\" to \"E-Traders\\nHedgehogs\")\n", + " }\n", + " alpha = 0.6\n", + " borderLine.width = 0.0\n", + " }\n", + "}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T13:01:44.822299Z", + "start_time": "2023-12-07T13:01:44.608218Z" + } + }, + "execution_count": 10 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Kotlin", + "language": "kotlin", + "name": "kotlin" + }, + "language_info": { + "name": "kotlin", + "version": "1.9.0", + "mimetype": "text/x-kotlin", + "file_extension": ".kt", + "pygments_lexer": "kotlin", + "codemirror_mode": "text/x-kotlin", + "nbconvert_exporter": "" + }, + "ktnbPluginMetadata": { + "projectLibraries": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/lets-plot/samples/ribbon/ribbon_settings.ipynb b/examples/notebooks/lets-plot/samples/ribbon/ribbon_settings.ipynb new file mode 100644 index 00000000..d9f13bdb --- /dev/null +++ b/examples/notebooks/lets-plot/samples/ribbon/ribbon_settings.ipynb @@ -0,0 +1,497 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-07T10:24:33.452299Z", + "start_time": "2023-12-07T10:24:22.975591Z" + } + }, + "outputs": [], + "source": [ + "%use dataframe, kandy" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "val year by columnOf(\"2019\", \"2020\", \"2021\", \"2022\", \"2023\")\n", + "val minCost by columnOf(56.5, 59.9, 60.8, 78.9, 75.5)\n", + "val maxCost by columnOf(58.1, 69.3, 66.4, 108.3, 92.2)\n", + "\n", + "val df = dataFrameOf(year, minCost, maxCost)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T10:25:05.090621Z", + "start_time": "2023-12-07T10:25:04.769141Z" + } + }, + "execution_count": 5 + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2019\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2020\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2021\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2022\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2023\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 60\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 70\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 80\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 90\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 100\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 110\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " cost\n", + " \n", + " \n", + " \n", + " \n", + " year\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " " + ], + "application/plot+json": { + "output_type": "lets_plot_spec", + "output": { + "mapping": {}, + "data": { + "year": [ + "2019", + "2020", + "2021", + "2022", + "2023" + ], + "maxCost": [ + 58.1, + 69.3, + 66.4, + 108.3, + 92.2 + ], + "minCost": [ + 56.5, + 59.9, + 60.8, + 78.9, + 75.5 + ] + }, + "kind": "plot", + "scales": [ + { + "aesthetic": "y", + "name": "cost", + "limits": [ + 55.0, + 110.0 + ] + }, + { + "aesthetic": "x", + "discrete": true + } + ], + "layers": [ + { + "mapping": { + "x": "year", + "ymin": "minCost", + "ymax": "maxCost" + }, + "stat": "identity", + "color": "#ee6666", + "size": 0.8, + "linetype": "dashed", + "sampling": "none", + "alpha": 0.65, + "position": "identity", + "geom": "ribbon", + "fill": "#3f21e6" + } + ] + }, + "apply_color_scheme": true, + "swing_enabled": true + } + }, + "metadata": {}, + "output_type": "execute_result", + "execution_count": 13 + } + ], + "source": [ + "df.plot { \n", + " ribbon { \n", + " x(year)\n", + " y {\n", + " axis.name = \"cost\"\n", + " scale = continuous(55.0..110.0)\n", + " }\n", + " yMin(minCost)\n", + " yMax(maxCost)\n", + " fillColor = Color.hex(0x3f21e6)\n", + " alpha = 0.65\n", + " borderLine {\n", + " color = Color.RED\n", + " width = 0.8\n", + " type = LineType.DASHED\n", + " }\n", + " }\n", + "}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T12:06:45.094709Z", + "start_time": "2023-12-07T12:06:44.857913Z" + } + }, + "execution_count": 13 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Kotlin", + "language": "kotlin", + "name": "kotlin" + }, + "language_info": { + "name": "kotlin", + "version": "1.9.0", + "mimetype": "text/x-kotlin", + "file_extension": ".kt", + "pygments_lexer": "kotlin", + "codemirror_mode": "text/x-kotlin", + "nbconvert_exporter": "" + }, + "ktnbPluginMetadata": { + "projectLibraries": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/lets-plot/samples/ribbon/ribbon_simple.ipynb b/examples/notebooks/lets-plot/samples/ribbon/ribbon_simple.ipynb new file mode 100644 index 00000000..b8687c0c --- /dev/null +++ b/examples/notebooks/lets-plot/samples/ribbon/ribbon_simple.ipynb @@ -0,0 +1,471 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-07T10:08:20.796053Z", + "start_time": "2023-12-07T10:08:06.006598Z" + } + }, + "outputs": [], + "source": [ + "%use dataframe, kandy" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "val xs = listOf(1.0, 2.0, 3.0, 4.0, 5.0, 6.0)\n", + "val mins = listOf(0.2, 0.9, 0.55, 1.32, 2.2, 1.5)\n", + "val maxs = listOf(0.7, 1.4, 1.1, 2.1, 2.6, 2.2)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T10:11:03.749782Z", + "start_time": "2023-12-07T10:11:03.628830Z" + } + }, + "execution_count": 8 + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 6\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0.5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1.0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1.5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2.0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 2.5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " y\n", + " \n", + " \n", + " \n", + " \n", + " x\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " " + ], + "application/plot+json": { + "output_type": "lets_plot_spec", + "output": { + "mapping": {}, + "data": {}, + "kind": "plot", + "scales": [ + { + "aesthetic": "x", + "limits": [ + null, + null + ] + } + ], + "layers": [ + { + "mapping": { + "x": "x", + "ymin": "ymin", + "ymax": "ymax" + }, + "stat": "identity", + "data": { + "ymin": [ + 0.2, + 0.9, + 0.55, + 1.32, + 2.2, + 1.5 + ], + "ymax": [ + 0.7, + 1.4, + 1.1, + 2.1, + 2.6, + 2.2 + ], + "x": [ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ] + }, + "sampling": "none", + "position": "identity", + "geom": "ribbon" + } + ] + }, + "apply_color_scheme": true, + "swing_enabled": true + } + }, + "metadata": {}, + "output_type": "execute_result", + "execution_count": 9 + } + ], + "source": [ + "plot {\n", + " ribbon { \n", + " x(xs)\n", + " yMin(mins)\n", + " yMax(maxs)\n", + " }\n", + "}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T10:11:04.246866Z", + "start_time": "2023-12-07T10:11:04.059851Z" + } + }, + "execution_count": 9 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Kotlin", + "language": "kotlin", + "name": "kotlin" + }, + "language_info": { + "name": "kotlin", + "version": "1.9.0", + "mimetype": "text/x-kotlin", + "file_extension": ".kt", + "pygments_lexer": "kotlin", + "codemirror_mode": "text/x-kotlin", + "nbconvert_exporter": "" + }, + "ktnbPluginMetadata": { + "projectLibraries": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb b/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb new file mode 100644 index 00000000..5ce1aba2 --- /dev/null +++ b/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb @@ -0,0 +1,622 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-07T10:35:11.296270Z", + "start_time": "2023-12-07T10:34:55.595613Z" + } + }, + "outputs": [], + "source": [ + "%use dataframe, kandy" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "val day = listOf(\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\")\n", + "val low = listOf(16345f, 18718f, 17541f, 17302f, 15991f, 18315f, 20189f)\n", + "val high = listOf(18252f, 19912f, 19001f, 21540f, 18770f, 20945f, 23007f)\n", + "val mid = low.zip(high).map { (it.second + it.first) / 2 }" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T11:14:47.975717Z", + "start_time": "2023-12-07T11:14:47.823465Z" + } + }, + "execution_count": 10 + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Mon\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Tue\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Wed\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Thu\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Fri\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Sat\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Sun\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 15,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 16,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 17,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 18,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 19,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 20,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 21,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 22,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 23,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 24,000\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " price\n", + " \n", + " \n", + " \n", + " \n", + " day of week\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " " + ], + "application/plot+json": { + "output_type": "lets_plot_spec", + "output": { + "mapping": {}, + "data": { + "ymin": [ + 16345.0, + 18718.0, + 17541.0, + 17302.0, + 15991.0, + 18315.0, + 20189.0 + ], + "ymax": [ + 18252.0, + 19912.0, + 19001.0, + 21540.0, + 18770.0, + 20945.0, + 23007.0 + ], + "x": [ + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun" + ], + "y": [ + 17298.5, + 19315.0, + 18271.0, + 19421.0, + 17380.5, + 19630.0, + 21598.0 + ] + }, + "kind": "plot", + "scales": [ + { + "aesthetic": "x", + "discrete": true, + "name": "day of week" + }, + { + "aesthetic": "y", + "limits": [ + null, + null + ] + }, + { + "aesthetic": "x", + "discrete": true, + "name": "day of week" + }, + { + "aesthetic": "y", + "name": "price", + "limits": [ + 15000.0, + 24000.0 + ] + } + ], + "layers": [ + { + "mapping": { + "x": "x", + "y": "y" + }, + "stat": "identity", + "color": "#3ba272", + "size": 2.0, + "linetype": "dotted", + "sampling": "none", + "position": "identity", + "geom": "line" + }, + { + "mapping": { + "x": "x", + "ymin": "ymin", + "ymax": "ymax" + }, + "stat": "identity", + "color": "#5470c6", + "sampling": "none", + "position": "identity", + "geom": "ribbon" + } + ] + }, + "apply_color_scheme": true, + "swing_enabled": true + } + }, + "metadata": {}, + "output_type": "execute_result", + "execution_count": 12 + } + ], + "source": [ + "plot {\n", + " x(day) { axis.name = \"day of week\" }\n", + " y {\n", + " axis.name = \"price\"\n", + " scale = continuous(15000f..24000f)\n", + " }\n", + " line { \n", + " y(mid)\n", + " color = Color.GREEN\n", + " type = LineType.DOTTED\n", + " width = 2.0\n", + " }\n", + " ribbon { \n", + " yMin(low)\n", + " yMax(high)\n", + " borderLine.color = Color.BLUE\n", + " }\n", + "}" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-07T12:05:48.495950Z", + "start_time": "2023-12-07T12:05:48.159072Z" + } + }, + "execution_count": 12 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Kotlin", + "language": "kotlin", + "name": "kotlin" + }, + "language_info": { + "name": "kotlin", + "version": "1.9.0", + "mimetype": "text/x-kotlin", + "file_extension": ".kt", + "pygments_lexer": "kotlin", + "codemirror_mode": "text/x-kotlin", + "nbconvert_exporter": "" + }, + "ktnbPluginMetadata": { + "projectLibraries": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt b/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt new file mode 100644 index 00000000..7457bc4b --- /dev/null +++ b/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt @@ -0,0 +1,302 @@ +package org.jetbrains.kotlinx.kandy.letsplot.samples + +import org.jetbrains.kotlinx.dataframe.api.columnOf +import org.jetbrains.kotlinx.dataframe.api.groupBy +import org.jetbrains.kotlinx.dataframe.api.dataFrameOf +import org.jetbrains.kotlinx.dataframe.api.toColumn +import org.jetbrains.kotlinx.kandy.dsl.continuous +import org.jetbrains.kotlinx.kandy.dsl.plot +import org.jetbrains.kotlinx.kandy.letsplot.layers.line +import org.jetbrains.kotlinx.kandy.letsplot.layers.ribbon +import org.jetbrains.kotlinx.kandy.letsplot.settings.LineType +import org.jetbrains.kotlinx.kandy.letsplot.x +import org.jetbrains.kotlinx.kandy.letsplot.y +import org.jetbrains.kotlinx.kandy.util.context.invoke +import org.jetbrains.kotlinx.kandy.util.color.Color +import org.jetbrains.kotlinx.statistics.kandy.stattransform.statSmooth +import kotlin.math.* +import kotlin.test.Test + +class Ribbon : SampleHelper("ribbon") { + + @Test + fun ribbon_simple_dataframe() { + // SampleStart + val xs by columnOf(1.0, 2.0, 3.0, 4.0, 5.0, 6.0) + val mins by columnOf(0.2, 0.9, 0.55, 1.32, 2.2, 1.5) + val maxs by columnOf(0.7, 1.4, 1.1, 2.1, 2.6, 2.2) + val df = dataFrameOf(xs, mins, maxs) + + df.plot { + ribbon { + x(xs) + yMin(mins) + yMax(maxs) + } + } + // SampleEnd + .saveSample() + } + + @Test + fun ribbon_simple_collections() { + // SampleStart + val xs = listOf(1.0, 2.0, 3.0, 4.0, 5.0, 6.0) + val mins = listOf(0.2, 0.9, 0.55, 1.32, 2.2, 1.5) + val maxs = listOf(0.7, 1.4, 1.1, 2.1, 2.6, 2.2) + + plot { + ribbon { + x(xs) + yMin(mins) + yMax(maxs) + } + } + // SampleEnd + } + + @Test + fun ribbon_settings_dataframe() { + // SampleStart + val year by columnOf("2019", "2020", "2021", "2022", "2023") + val minCost by columnOf(56.5, 59.9, 60.8, 78.9, 75.5) + val maxCost by columnOf(58.1, 69.3, 66.4, 108.3, 92.2) + val df = dataFrameOf(year, minCost, maxCost) + + df.plot { + ribbon { + x(year) + y { + axis.name = "cost" + scale = continuous(55.0..110.0) + } + yMin(minCost) + yMax(maxCost) + fillColor = Color.hex(0x3f21e6) + alpha = 0.65 + borderLine { + color = Color.RED + width = 0.8 + type = LineType.DASHED + } + } + } + // SampleEnd + .saveSample() + } + + @Test + fun ribbon_settings_collections() { + // SampleStart + val year = listOf("2019", "2020", "2021", "2022", "2023") + val minCost = listOf(56.5, 59.9, 60.8, 78.9, 75.5) + val maxCost = listOf(58.1, 69.3, 66.4, 108.3, 92.2) + + plot { + ribbon { + x(year) + y { + axis.name = "cost" + scale = continuous(55.0..110.0) + } + yMin(minCost) + yMax(maxCost) + fillColor = Color.hex(0x3f21e6) + alpha = 0.65 + borderLine { + color = Color.RED + width = 0.8 + type = LineType.DASHED + } + } + } + // SampleEnd + } + + @Test + fun ribbon_function_plot() { + // SampleStart + val xs = (-1000..1000).map { it / 250.0f } + val function = { x: Float -> sin(2 * x) * cos(x / 2 - 3.0) } + val yActual = xs.map(function) + val yLow = yActual.map { it - 0.25 } + val yHigh = yActual.map { it + 0.25 } + + plot { + ribbon { + x(xs) + yMin(yLow) + yMax(yHigh) + fillColor = Color.LIGHT_BLUE + } + } + // SampleEnd + .saveSample() + } + + @Test + fun ribbon_with_line_dataframe() { + // SampleStart + val day by columnOf("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") + val low by columnOf(16345f, 18718f, 17541f, 17302f, 15991f, 18315f, 20189f) + val high by columnOf(18252f, 19912f, 19001f, 21540f, 18770f, 20945f, 23007f) + val mid by (low.values().zip(high.values()).map { (it.second + it.first) / 2 }).toColumn() + val df = dataFrameOf(day, low, mid, high) + + df.plot { + x(day) { axis.name = "day of week" } + y { + axis.name = "price" + scale = continuous(15000f..24000f) + } + line { + y(mid) + color = Color.GREEN + type = LineType.DOTTED + width = 2.0 + } + ribbon { + yMin(low) + yMax(high) + borderLine.color = Color.BLUE + } + } + // SampleEnd + .saveSample() + } + + @Test + fun ribbon_with_line_collections() { + // SampleStart + val day = listOf("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") + val low = listOf(16345f, 18718f, 17541f, 17302f, 15991f, 18315f, 20189f) + val high = listOf(18252f, 19912f, 19001f, 21540f, 18770f, 20945f, 23007f) + val mid = low.zip(high).map { (it.second + it.first) / 2 } + + plot { + x(day) { axis.name = "day of week" } + y { + axis.name = "price" + scale = continuous(15000f..24000f) + } + line { + y(mid) + color = Color.GREEN + type = LineType.DOTTED + width = 2.0 + } + ribbon { + yMin(low) + yMax(high) + borderLine.color = Color.BLUE + } + } + // SampleEnd + } + + @Test + fun ribbon_grouped_dataframe() { + // SampleStart + val times = listOf("00:00", "06:00", "12:00", "18:00", "24:00") + val btcMin = listOf(310, 225, 202, 278, 360) + val btcMax = listOf(334, 307, 243, 293, 388) + val ethMin = listOf(180, 205, 256, 300, 280) + val ethMax = listOf(210, 234, 299, 322, 331) + + val dataset = dataFrameOf( + "time" to times + times, + "min" to btcMin + ethMin, + "max" to btcMax + ethMax, + "currency" to List(5) { "btc" } + List(5) { "eth" } + ) + + dataset.groupBy("currency").plot { + ribbon { + x("time") + y { + limits = 170..400 + axis.name = "price, tokens" + } + yMin("min") + yMax("max") + fillColor("currency") { + legend.breaksLabeled("btc" to "Bubble Tea\nCoin", "eth" to "E-Traders\nHedgehogs") + } + alpha = 0.6 + borderLine.width = 0.0 + } + } + // SampleEnd + .saveSample() + } + + @Test + fun ribbon_grouped_collections() { + // SampleStart + val times = listOf("00:00", "06:00", "12:00", "18:00", "24:00") + val btcMin = listOf(310, 225, 202, 278, 360) + val btcMax = listOf(334, 307, 243, 293, 388) + val ethMin = listOf(180, 205, 256, 300, 280) + val ethMax = listOf(210, 234, 299, 322, 331) + + val dataset = mapOf( + "time" to times + times, + "min" to btcMin + ethMin, + "max" to btcMax + ethMax, + "currency" to List(5) { "btc" } + List(5) { "eth" } + ) + + dataset.plot { + groupBy("currency") { + ribbon { + x("time") + y { + limits = 170..400 + axis.name = "price, tokens" + } + yMin("min") + yMax("max") + fillColor("currency") { + legend.breaksLabeled("btc" to "Bubble Tea\nCoin", "eth" to "E-Traders\nHedgehogs") + } + alpha = 0.6 + borderLine.width = 0.0 + } + } + } + // SampleEnd + } + + @Test + fun regression_confidence_band() { + val xs = listOf( + -3.0, -2.8, -2.7, -2.6, -2.6, -2.5, -2.2, -3.1, -1.5, + -0.2, 2.0, 1.2, 2.6, 2.1, 0.1, 1.2, 1.7, 0.0, 2.8, + 2.5, 0.2, 1.3, 2.5 + ) + val ys = listOf( + -1.4, -1.2, -1.4, -1.3, -1.2, -1.1, 1.5, 2.4, 1.1, -0.9, + 3.5, 1.6, -0.7, 1.2, 0.1, 3.4, 2.8, 4.2, 1.16, 4.1, 2.2, + 1.4, 5.1 + ) + + plot { + statSmooth(xs, ys) { + line { + x(Stat.x) + y(Stat.y) + width = 2.0 + color = Color.BLUE + } + ribbon { + x(Stat.x) + yMin(Stat.yMin) + yMax(Stat.yMax) + borderLine.width = 0.0 + } + } + } + // SampleEnd + .saveSample() + } +} \ No newline at end of file From db0434ec5e7cb11efae0138a7d0856549190aa50 Mon Sep 17 00:00:00 2001 From: Andrei Date: Tue, 12 Dec 2023 14:12:58 +0400 Subject: [PATCH 2/6] fix missing stack position --- .../kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/bars.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/bars.kt b/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/bars.kt index ac8009a3..f46d9d93 100644 --- a/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/bars.kt +++ b/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/bars.kt @@ -393,6 +393,7 @@ class Bars : SampleHelper("bars") { "soda" to Color.hex("#B5651D") ) } + position = Position.stack() } } } From cdf58c87cf8bbe4688dfa2e7f1d67183d31687db Mon Sep 17 00:00:00 2001 From: Andrei Date: Wed, 13 Dec 2023 01:24:48 +0400 Subject: [PATCH 3/6] fix bars --- docs/topics/samples/bars/Stacked-Bars.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/samples/bars/Stacked-Bars.md b/docs/topics/samples/bars/Stacked-Bars.md index 9f5a82d8..fc823d7e 100644 --- a/docs/topics/samples/bars/Stacked-Bars.md +++ b/docs/topics/samples/bars/Stacked-Bars.md @@ -73,6 +73,7 @@ dataset.plot { "soda" to Color.hex("#B5651D") ) } + position = Position.stack() } } } From b1e11d9f2e85ea2d8591a5bbe8731ecbc0657115 Mon Sep 17 00:00:00 2001 From: Andrei Date: Wed, 13 Dec 2023 01:25:16 +0400 Subject: [PATCH 4/6] Add ribbon gallery --- docs/kd.tree | 8 ++ docs/topics/Examples.topic | 46 ++++++++ docs/topics/samples/Ribbon.md | 3 + .../samples/ribbon/Function-Ribbon-Graph.md | 48 +++++++++ .../ribbon/Regression-Confidence-Band.md | 59 ++++++++++ docs/topics/samples/ribbon/Ribbon-Settings.md | 86 +++++++++++++++ .../topics/samples/ribbon/Ribbon-With-Line.md | 89 +++++++++++++++ docs/topics/samples/ribbon/Several-Ribbons.md | 102 ++++++++++++++++++ docs/topics/samples/ribbon/Simple-Ribbon.md | 44 +++++++- examples/README.md | 45 ++++++++ .../ribbon/regression_confidence_band.ipynb | 12 ++- .../samples/ribbon/ribbon_with_line.ipynb | 70 ++++++------ kandy-lets-plot/build.gradle.kts | 1 + .../kotlinx/kandy/letsplot/samples/ribbon.kt | 1 + 14 files changed, 573 insertions(+), 41 deletions(-) create mode 100644 docs/topics/samples/Ribbon.md create mode 100644 docs/topics/samples/ribbon/Function-Ribbon-Graph.md create mode 100644 docs/topics/samples/ribbon/Regression-Confidence-Band.md create mode 100644 docs/topics/samples/ribbon/Ribbon-Settings.md create mode 100644 docs/topics/samples/ribbon/Ribbon-With-Line.md create mode 100644 docs/topics/samples/ribbon/Several-Ribbons.md diff --git a/docs/kd.tree b/docs/kd.tree index 0ba604fb..722d4409 100644 --- a/docs/kd.tree +++ b/docs/kd.tree @@ -173,6 +173,14 @@ + + + + + + + + diff --git a/docs/topics/Examples.topic b/docs/topics/Examples.topic index 5ad22c1a..a5fec2ac 100644 --- a/docs/topics/Examples.topic +++ b/docs/topics/Examples.topic @@ -395,6 +395,52 @@ + + +
  • + + Simple Ribbon + Simple Ribbon + +
  • + +
  • + + Ribbon Settings + Ribbon Settings + +
  • + +
  • + + Ribbon with Line + Ribbon With Line + +
  • + +
  • + + Several Ribbons + Several Ribbons + +
  • + +
  • + + Function Ribbon Graph + Function Ribbon Graph + +
  • + +
  • + + Regression Confidence Band + Regression Confidence Band + +
  • +
    +
    +
  • diff --git a/docs/topics/samples/Ribbon.md b/docs/topics/samples/Ribbon.md new file mode 100644 index 00000000..780cd7ab --- /dev/null +++ b/docs/topics/samples/Ribbon.md @@ -0,0 +1,3 @@ +# Ribbon + + \ No newline at end of file diff --git a/docs/topics/samples/ribbon/Function-Ribbon-Graph.md b/docs/topics/samples/ribbon/Function-Ribbon-Graph.md new file mode 100644 index 00000000..07009b38 --- /dev/null +++ b/docs/topics/samples/ribbon/Function-Ribbon-Graph.md @@ -0,0 +1,48 @@ +# Function Ribbon Graph + + +Explore 'Function Ribbon Graph' in Kotlin using Kandy to visualize complex mathematical functions. +This example uniquely demonstrates how ribbon plots can be used to represent intricate function behaviors and patterns. + + + +'Function Ribbon Graph' in Kotlin with Kandy: +A mathematical journey into visualizing complex functions using ribbon plots, perfect for an analytical view of functional dynamics. + + + +Dive into 'Function Ribbon Graph' using Kotlin and Kandy, where mathematics meets art in the visualization of complex functional relationships with ribbon plots. + + + + + + + +```kotlin +val xs = (-1000..1000).map { it / 250.0f } +val function = { x: Float -> sin(2 * x) * cos(x / 2 - 3.0) } +val yActual = xs.map(function) +val yLow = yActual.map { it - 0.25 } +val yHigh = yActual.map { it + 0.25 } + +plot { + ribbon { + x(xs) + yMin(yLow) + yMax(yHigh) + fillColor = Color.LIGHT_BLUE + } +} +``` + + + +![Functional Area Plot](ribbon_function_plot.svg) { border-effect="rounded" } + + + + GitHub Notebook + Datalore Notebook + + diff --git a/docs/topics/samples/ribbon/Regression-Confidence-Band.md b/docs/topics/samples/ribbon/Regression-Confidence-Band.md new file mode 100644 index 00000000..91d0b943 --- /dev/null +++ b/docs/topics/samples/ribbon/Regression-Confidence-Band.md @@ -0,0 +1,59 @@ +# Regression Confidence Band + + +Explore the 'Regression Confidence Band' plot in Kotlin using Kandy to see how line smoothing techniques can be enhanced with ribbon plot. + + + +'Regression Confidence Band' in Kotlin with Kandy: A seamless blend of data smoothing and ribbon plotting, ideal for portraying subtle data patterns in a visually appealing way. + + + +Dive into 'Regression Confidence Band' using Kotlin and Kandy, showcasing the elegance and clarity of smoothed curves extension with ribbon plot. + + + + + + + +```kotlin +val xs = listOf( + -3.0, -2.8, -2.7, -2.6, -2.6, -2.5, -2.2, -3.1, -1.5, + -0.2, 2.0, 1.2, 2.6, 2.1, 0.1, 1.2, 1.7, 0.0, 2.8, + 2.5, 0.2, 1.3, 2.5 +) +val ys = listOf( + -1.4, -1.2, -1.4, -1.3, -1.2, -1.1, 1.5, 2.4, 1.1, -0.9, + 3.5, 1.6, -0.7, 1.2, 0.1, 3.4, 2.8, 4.2, 1.16, 4.1, 2.2, + 1.4, 5.1 +) + +plot { + statSmooth(xs, ys) { + line { + x(Stat.x) + y(Stat.y) + width = 2.0 + color = Color.BLUE + } + ribbon { + x(Stat.x) + yMin(Stat.yMin) + yMax(Stat.yMax) + borderLine.width = 0.0 + } + } +} +``` + + + +![Smoothed Area](regression_confidence_band.svg) { border-effect="rounded" } + + + + GitHub Notebook + Datalore Notebook + + diff --git a/docs/topics/samples/ribbon/Ribbon-Settings.md b/docs/topics/samples/ribbon/Ribbon-Settings.md new file mode 100644 index 00000000..666ed8df --- /dev/null +++ b/docs/topics/samples/ribbon/Ribbon-Settings.md @@ -0,0 +1,86 @@ +# Ribbon Settings + + +Learn to customize ribbon graphs in Kotlin using the Kandy library with the 'Ribbon Settings' example. +This demonstration includes altering ribbon styles and colors for a dataset of minimal and maximal cost over years. + + + +'Ribbon Settings' Example: A Kotlin demonstration with Kandy to customize ribbon graphs, featuring dashed ribbons and color adjustments. + + + +Dive into 'Ribbon Settings' for insights on customizing ribbon graphs in Kotlin with Kandy, showcasing a visualization of years cost changes data. + + + + + + + + +```kotlin +val year by columnOf("2019", "2020", "2021", "2022", "2023") +val minCost by columnOf(56.5, 59.9, 60.8, 78.9, 75.5) +val maxCost by columnOf(58.1, 69.3, 66.4, 108.3, 92.2) +val df = dataFrameOf(year, minCost, maxCost) + +df.plot { + ribbon { + x(year) + y { + axis.name = "cost" + scale = continuous(55.0..110.0) + } + yMin(minCost) + yMax(maxCost) + fillColor = Color.hex(0x3f21e6) + alpha = 0.65 + borderLine { + color = Color.RED + width = 0.8 + type = LineType.DASHED + } + } +} +``` + + + + +```kotlin +val year = listOf("2019", "2020", "2021", "2022", "2023") +val minCost = listOf(56.5, 59.9, 60.8, 78.9, 75.5) +val maxCost = listOf(58.1, 69.3, 66.4, 108.3, 92.2) + +plot { + ribbon { + x(year) + y { + axis.name = "cost" + scale = continuous(55.0..110.0) + } + yMin(minCost) + yMax(maxCost) + fillColor = Color.hex(0x3f21e6) + alpha = 0.65 + borderLine { + color = Color.RED + width = 0.8 + type = LineType.DASHED + } + } +} +``` + + + + +![Ribbon Settings](ribbon_settings.svg) { border-effect="rounded" } + + + + GitHub Notebook + Datalore Notebook + + diff --git a/docs/topics/samples/ribbon/Ribbon-With-Line.md b/docs/topics/samples/ribbon/Ribbon-With-Line.md new file mode 100644 index 00000000..7f65a5e1 --- /dev/null +++ b/docs/topics/samples/ribbon/Ribbon-With-Line.md @@ -0,0 +1,89 @@ +# Ribbon With Line + + +Discover 'Ribbon with Line' in Kotlin using Kandy, where ribbon plots are enhanced with mark line. +This example compares the minimal, middle and maximal price value over week. + + + +'Ribbon with Line' in Kotlin with Kandy: An innovative plot combining ribbon charts with line, providing a visual comparison of price value characteristics. + + + +Explore 'Ribbon with Line' in Kotlin using Kandy, a creative approach to show value interval with middle value. + + + + + + + + + +```kotlin +val day by columnOf("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") +val low by columnOf(16345f, 18718f, 17541f, 17302f, 15991f, 18315f, 20189f) +val high by columnOf(18252f, 19912f, 19001f, 21540f, 18770f, 20945f, 23007f) +val mid by (low.values().zip(high.values()).map { (it.second + it.first) / 2 }).toColumn() +val df = dataFrameOf(day, low, mid, high) + +df.plot { + x(day) { axis.name = "day of week" } + y { + axis.name = "price" + scale = continuous(15000f..24000f) + } + line { + y(mid) + color = Color.GREEN + type = LineType.DOTTED + width = 2.0 + } + ribbon { + yMin(low) + yMax(high) + borderLine.color = Color.BLUE + } +} +``` + + + + +```kotlin +val day = listOf("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") +val low = listOf(16345f, 18718f, 17541f, 17302f, 15991f, 18315f, 20189f) +val high = listOf(18252f, 19912f, 19001f, 21540f, 18770f, 20945f, 23007f) +val mid = low.zip(high).map { (it.second + it.first) / 2 } + +plot { + x(day) { axis.name = "day of week" } + y { + axis.name = "price" + scale = continuous(15000f..24000f) + } + line { + y(mid) + color = Color.GREEN + type = LineType.DOTTED + width = 2.0 + } + ribbon { + yMin(low) + yMax(high) + borderLine.color = Color.BLUE + } +} +``` + + + + +![Ribbon with Line](ribbon_with_line.svg) { border-effect="rounded" } + + + + GitHub Notebook + Datalore Notebook + + diff --git a/docs/topics/samples/ribbon/Several-Ribbons.md b/docs/topics/samples/ribbon/Several-Ribbons.md new file mode 100644 index 00000000..ac01f974 --- /dev/null +++ b/docs/topics/samples/ribbon/Several-Ribbons.md @@ -0,0 +1,102 @@ +# Several Ribbons + + +Explore 'Several Ribbons' in Kotlin using Kandy to see how multiple ribbon plots can be combined for comparative data analysis. +This example skillfully illustrates the overlaying of different currencies change data in a single chart for a comprehensive view. + + + +'Several Ribbons' in Kotlin with Kandy: A demonstration of layering multiple ribbon plots, ideal for juxtaposing varied data sets in an insightful and visually appealing manner. + + + +Dive into 'Several Ribbons' using Kotlin and Kandy, a sophisticated example of blending multiple ribbon plots, perfect for in-depth comparative data visualization. + + + + + + + + + +```kotlin +val times = listOf("00:00", "06:00", "12:00", "18:00", "24:00") +val btcMin = listOf(310, 225, 202, 278, 360) +val btcMax = listOf(334, 307, 243, 293, 388) +val ethMin = listOf(180, 205, 256, 300, 280) +val ethMax = listOf(210, 234, 299, 322, 331) + +val dataset = dataFrameOf( + "time" to times + times, + "min" to btcMin + ethMin, + "max" to btcMax + ethMax, + "currency" to List(5) { "btc" } + List(5) { "eth" } +) + +dataset.groupBy("currency").plot { + ribbon { + x("time") + y { + limits = 170..400 + axis.name = "price, tokens" + } + yMin("min") + yMax("max") + fillColor("currency") { + legend.breaksLabeled("btc" to "Bubble Tea\nCoin", "eth" to "E-Traders\nHedgehogs") + } + alpha = 0.6 + borderLine.width = 0.0 + } +} +``` + + + + +```kotlin +val times = listOf("00:00", "06:00", "12:00", "18:00", "24:00") +val btcMin = listOf(310, 225, 202, 278, 360) +val btcMax = listOf(334, 307, 243, 293, 388) +val ethMin = listOf(180, 205, 256, 300, 280) +val ethMax = listOf(210, 234, 299, 322, 331) + +val dataset = mapOf( + "time" to times + times, + "min" to btcMin + ethMin, + "max" to btcMax + ethMax, + "currency" to List(5) { "btc" } + List(5) { "eth" } +) + +dataset.plot { + groupBy("currency") { + ribbon { + x("time") + y { + limits = 170..400 + axis.name = "price, tokens" + } + yMin("min") + yMax("max") + fillColor("currency") { + legend.breaksLabeled("btc" to "Bubble Tea\nCoin", "eth" to "E-Traders\nHedgehogs") + } + alpha = 0.6 + borderLine.width = 0.0 + } + } +} +``` + + + + +![Several Ribbons](ribbon_grouped.svg) { border-effect="rounded" } + + + + GitHub Notebook + Datalore Notebook + + diff --git a/docs/topics/samples/ribbon/Simple-Ribbon.md b/docs/topics/samples/ribbon/Simple-Ribbon.md index 9d3b0437..4c6ffb9c 100644 --- a/docs/topics/samples/ribbon/Simple-Ribbon.md +++ b/docs/topics/samples/ribbon/Simple-Ribbon.md @@ -1,4 +1,4 @@ -# Simple Line +# Simple Ribbon Explore a simple ribbon plot creation with the 'Simple Ribbon' example using the Kandy library in Kotlin. @@ -13,9 +13,45 @@ Check out 'Simple Ribbon' for an easy demonstration of ribbon chart plotting wit - + - + + + + +```kotlin +val xs by columnOf(1.0, 2.0, 3.0, 4.0, 5.0, 6.0) +val mins by columnOf(0.2, 0.9, 0.55, 1.32, 2.2, 1.5) +val maxs by columnOf(0.7, 1.4, 1.1, 2.1, 2.6, 2.2) +val df = dataFrameOf(xs, mins, maxs) + +df.plot { + ribbon { + x(xs) + yMin(mins) + yMax(maxs) + } +} +``` + + + + +```kotlin +val xs = listOf(1.0, 2.0, 3.0, 4.0, 5.0, 6.0) +val mins = listOf(0.2, 0.9, 0.55, 1.32, 2.2, 1.5) +val maxs = listOf(0.7, 1.4, 1.1, 2.1, 2.6, 2.2) + +plot { + ribbon { + x(xs) + yMin(mins) + yMax(maxs) + } +} +``` + + ![Simple Ribbon](ribbon_simple.svg) { border-effect="rounded" } @@ -23,6 +59,6 @@ Check out 'Simple Ribbon' for an easy demonstration of ribbon chart plotting wit GitHub Notebook - Datalore Notebook + Datalore Notebook diff --git a/examples/README.md b/examples/README.md index 6b943cdf..063b8f6d 100644 --- a/examples/README.md +++ b/examples/README.md @@ -440,6 +440,51 @@ The following is an example of using the `kandy-echarts` library in an IntelliJ +### Ribbon + + + + + + + + + + + + +
    + + Simple Ribbon + Simple Ribbon + + + + Ribbon Settings + Ribbon Settings + + + + Ribbon with Line + Ribbon with Line + +
    + + Several Ribbons + Several Ribbons + + + + Function Ribbon Graph + Function Ribbon Graph + + + + Regression Confidence Band + Regression Confidence Band + +
    + ### Boxplot diff --git a/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb b/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb index abe8d71b..b8494688 100644 --- a/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb +++ b/examples/notebooks/lets-plot/samples/ribbon/regression_confidence_band.ipynb @@ -19,8 +19,16 @@ "cell_type": "code", "outputs": [], "source": [ - "val xs = listOf(-3.0, -2.8, -2.7, -2.6, -2.6, -2.5, -2.2, -3.1, -1.5, -0.2, 2.0, 1.2, 2.6, 2.1, 0.1, 1.2, 1.7, 0.0, 2.8, 2.5, 0.2, 1.3, 2.5)\n", - "val ys = listOf(-1.4, -1.2, -1.4, -1.3, -1.2, -1.1, 1.5, 2.4, 1.1, -0.9, 3.5, 1.6, -0.7, 1.2, 0.1, 3.4, 2.8, 4.2, 1.16, 4.1, 2.2, 1.4, 5.1)" + "val xs = listOf(\n", + " -3.0, -2.8, -2.7, -2.6, -2.6, -2.5, -2.2, -3.1, -1.5, \n", + " -0.2, 2.0, 1.2, 2.6, 2.1, 0.1, 1.2, 1.7, 0.0, 2.8, \n", + " 2.5, 0.2, 1.3, 2.5\n", + ")\n", + "val ys = listOf(\n", + " -1.4, -1.2, -1.4, -1.3, -1.2, -1.1, 1.5, 2.4, 1.1, \n", + " -0.9, 3.5, 1.6, -0.7, 1.2, 0.1, 3.4, 2.8, 4.2, 1.16, \n", + " 4.1, 2.2, 1.4, 5.1\n", + ")" ], "metadata": { "collapsed": false, diff --git a/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb b/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb index 5ce1aba2..298140df 100644 --- a/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb +++ b/examples/notebooks/lets-plot/samples/ribbon/ribbon_with_line.ipynb @@ -6,8 +6,8 @@ "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2023-12-07T10:35:11.296270Z", - "start_time": "2023-12-07T10:34:55.595613Z" + "end_time": "2023-12-12T10:16:35.684163Z", + "start_time": "2023-12-12T10:16:25.915869Z" } }, "outputs": [], @@ -27,11 +27,11 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-07T11:14:47.975717Z", - "start_time": "2023-12-07T11:14:47.823465Z" + "end_time": "2023-12-12T10:16:36.321957Z", + "start_time": "2023-12-12T10:16:35.684928Z" } }, - "execution_count": 10 + "execution_count": 2 }, { "cell_type": "code", @@ -45,7 +45,7 @@ " <script type="text/javascript" data-lets-plot-script="library" src="https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.0.1/js-package/distr/lets-plot.min.js"></script>\n", " </head>\n", " <body>\n", - " <div id="Q3S4jY"></div>\n", + " <div id="7LHmFO"></div>\n", " <script type="text/javascript" data-lets-plot-script="plot">\n", " var plotSpec={\n", ""mapping":{\n", @@ -102,12 +102,12 @@ "}\n", "}]\n", "};\n", - " var plotContainer = document.getElementById("Q3S4jY");\n", + " var plotContainer = document.getElementById("7LHmFO");\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " </script>\n", " </body>\n", "</html>\"> \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -410,9 +410,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -422,9 +422,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -456,10 +456,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", "\n", - " " + " " ], "application/plot+json": { "output_type": "lets_plot_spec", @@ -565,7 +565,7 @@ }, "metadata": {}, "output_type": "execute_result", - "execution_count": 12 + "execution_count": 3 } ], "source": [ @@ -591,11 +591,11 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-07T12:05:48.495950Z", - "start_time": "2023-12-07T12:05:48.159072Z" + "end_time": "2023-12-12T10:16:38.198914Z", + "start_time": "2023-12-12T10:16:36.323726Z" } }, - "execution_count": 12 + "execution_count": 3 } ], "metadata": { diff --git a/kandy-lets-plot/build.gradle.kts b/kandy-lets-plot/build.gradle.kts index 281147c2..05dbf0c1 100644 --- a/kandy-lets-plot/build.gradle.kts +++ b/kandy-lets-plot/build.gradle.kts @@ -56,6 +56,7 @@ korro { include("docs/topics/samples/bars/*.md") include("docs/topics/samples/points/*.md") include("docs/topics/samples/errorBars/*.md") + include("docs/topics/samples/ribbon/*.md") include("docs/topics/samples/boxplot/*.md") include("docs/topics/samples/tiles/*.md") include("docs/topics/samples/histogram/*.md") diff --git a/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt b/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt index 7457bc4b..4cf0cc04 100644 --- a/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt +++ b/kandy-lets-plot/src/test/kotlin/org/jetbrains/kotlinx/kandy/letsplot/samples/ribbon.kt @@ -269,6 +269,7 @@ class Ribbon : SampleHelper("ribbon") { @Test fun regression_confidence_band() { + // SampleStart val xs = listOf( -3.0, -2.8, -2.7, -2.6, -2.6, -2.5, -2.2, -3.1, -1.5, -0.2, 2.0, 1.2, 2.6, 2.1, 0.1, 1.2, 1.7, 0.0, 2.8, From 69373db0b1c65a3376021dd76f4e9225a8407616 Mon Sep 17 00:00:00 2001 From: Andrei Date: Thu, 14 Dec 2023 15:04:00 +0400 Subject: [PATCH 5/6] add ribbon ref to welcome page --- docs/topics/Welcome.topic | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Welcome.topic b/docs/topics/Welcome.topic index 3859b2d1..525bf1dc 100644 --- a/docs/topics/Welcome.topic +++ b/docs/topics/Welcome.topic @@ -41,6 +41,7 @@ + From 3c6381f17e5d6e31334e9185004701bba69e3a81 Mon Sep 17 00:00:00 2001 From: Andrei Date: Thu, 14 Dec 2023 16:55:14 +0400 Subject: [PATCH 6/6] fix ribbon summary --- docs/topics/samples/Ribbon.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/topics/samples/Ribbon.md b/docs/topics/samples/Ribbon.md index 780cd7ab..d7dc1862 100644 --- a/docs/topics/samples/Ribbon.md +++ b/docs/topics/samples/Ribbon.md @@ -1,3 +1,15 @@ # Ribbon + +Ribbon plot examples in the Kandy Kotlin library + + + +Ribbon Examples + + + +Ribbon Examples + + \ No newline at end of file