jupyter-ijavascript-utils 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +6 -0
- package/DOCS.md +28 -12
- package/README.md +9 -0
- package/TODO.md +2 -37
- package/docResources/img/FruitYieldByFruit.png +0 -0
- package/docResources/img/Table_StyleCell.png +0 -0
- package/docResources/img/Table_StyleHeader.png +0 -0
- package/docResources/img/Table_StyleRow.png +0 -0
- package/docResources/img/Table_StyleTable.png +0 -0
- package/docResources/img/fruitYieldByYearBar.png +0 -0
- package/docResources/img/fruitYieldByYearColored.png +0 -0
- package/docResources/img/imdbAllMovies.png +0 -0
- package/docResources/img/katexExample.png +0 -0
- package/docResources/img/katexOptionsExample.png +0 -0
- package/docResources/img/latexExample.png +0 -0
- package/docResources/img/noiseVisualization_axisChart.svg +1 -0
- package/docResources/img/noiseVisualization_dotChart.svg +1 -0
- package/docResources/img/noiseVisualization_vlOrig.svg +1 -0
- package/docResources/img/noiseVisualization_vlSimple.svg +1 -0
- package/docResources/img/noiseVisualization_wavesDark.svg +1 -0
- package/docResources/img/noiseVisualization_wavesLight.svg +1 -0
- package/docResources/img/plantUmlDiagrams.jpg +0 -0
- package/docResources/img/plantumlSequence.png +0 -0
- package/docResources/img/svgAnimation1.gif +0 -0
- package/docResources/img/svgAnimation2Dark.gif +0 -0
- package/docResources/img/svgAnimation2Light.gif +0 -0
- package/docResources/img/svgEmbed1.png +0 -0
- package/docResources/img/svgP5Example.png +0 -0
- package/docResources/img/svgRender_1.svg +1 -0
- package/docResources/img/svgRender_2.svg +1 -0
- package/docResources/img/svgRender_3.svg +1 -0
- package/docResources/notebooks/ex_NoiseVisualization.ipynb +1878 -0
- package/docResources/notebooks/ex_NoiseVisualizationExport.ipynb +1405 -0
- package/docResources/notebooks/ex_VegaLite1.ipynb +1157 -0
- package/jsdoc.json +1 -1
- package/package.json +5 -2
- package/src/TableGenerator.js +78 -3
- package/src/__mocks__/node-fetch.js +9 -3
- package/src/__testHelper__/ijsContext.js +59 -0
- package/src/__tests__/TableGenerator__spec.js +1 -1
- package/src/__tests__/{htmlScript_internal_spec.js → htmlScript_internal__spec.js} +52 -0
- package/src/__tests__/ijs_htmlScript__spec.js +170 -28
- package/src/__tests__/latex__spec.js +87 -0
- package/src/__tests__/leaflet__spec.js +5 -0
- package/src/__tests__/plantuml__spec.js +238 -0
- package/src/__tests__/svg__spec.js +185 -0
- package/src/__tests__/svg_utilityFunctions__spec.js +126 -0
- package/src/_types/global.js +1 -0
- package/src/htmlScript_internal.js +32 -0
- package/src/ijs.js +25 -4
- package/src/index.js +9 -0
- package/src/latex.js +138 -0
- package/src/leaflet.js +4 -0
- package/src/plantuml.js +230 -0
- package/src/svg.js +374 -0
- package/src/svg_utilityFunctions.js +148 -0
- package/src/vega.js +9 -1
- package/tutorials/exampleWalkthrough.markdown +2 -4
- package/tutorials/noiseVisualization.markdown +1231 -0
- package/tutorials/tutorials.json +3 -0
- package/tutorials/vegaLite1.markdown +294 -100
- package/tutorials/vega_choroplethLong.markdown +2 -2
- package/tutorials/vega_choroplethShort.markdown +2 -0
package/DOCS.md
CHANGED
|
@@ -6,18 +6,21 @@ See the [#Installation section for requirements and installation](#install)
|
|
|
6
6
|
|
|
7
7
|
| Export | Description |
|
|
8
8
|
|-------------------------------|-----------------------------------------------------------------------------------------------------|
|
|
9
|
-
| {@link module:aggregate} |
|
|
10
|
-
| {@link module:array} |
|
|
11
|
-
| {@link module:base64} |
|
|
12
|
-
| {@link module:datasets} |
|
|
13
|
-
| {@link module:file} |
|
|
14
|
-
| {@link module:format} |
|
|
15
|
-
| {@link module:group} |
|
|
16
|
-
| {@link module:ijs} |
|
|
17
|
-
| {@link module:
|
|
18
|
-
| {@link module:
|
|
9
|
+
| {@link module:aggregate} | Aggregate collections or collections of objects (ex: min, max, unique, contains, etc. |
|
|
10
|
+
| {@link module:array} | Massage, sort, reshape arrays. |
|
|
11
|
+
| {@link module:base64} | Convert to and from base64 encoding of strings |
|
|
12
|
+
| {@link module:datasets} | Load example <a href="https://github.com/vega/vega-datasets">datasets provided by the vega team</a> |
|
|
13
|
+
| {@link module:file} | Read and write data/text to files. |
|
|
14
|
+
| {@link module:format} | Formatting and massage data to be legible. |
|
|
15
|
+
| {@link module:group} | Group/Reduce Hierarchies of Object - generating Maps of records ({@link SourceMap}) |
|
|
16
|
+
| {@link module:ijs} | Extend iJavaScript to support await, and new types of rendering - like {@tutorial htmlScript} and markdown|
|
|
17
|
+
| {@link module:latex} | Render Math Notation with <a href="www.latex-project.org">LaTeX<a> and <a href="katex.org">KaTeX</a>|
|
|
18
|
+
| {@link module:leaflet} | Render maps with <a href="leaflet.org">Leaflet</a> |
|
|
19
|
+
| {@link module:object} | Massage and manipulate Objects or Collections of Objects. |
|
|
20
|
+
| {@link module:plantuml} | Render <a href="https://plantuml.com">PlantUML</a> within Jupyter results. |
|
|
19
21
|
| {@link module:set} | Functional Utilities for managing JavaScript Sets - allowing for chaining. |
|
|
20
|
-
| {@link module:
|
|
22
|
+
| {@link module:svg} | Programmatically create SVGs (either jupyter side for exports, or client side for animations) |
|
|
23
|
+
| {@link module:vega} | Generate Charts / Graphs / Maps with <a href="https://vega.github.io/vega/">Vega</a> and <a href="https://vega.github.io/vega-lite/">Vega-Lite</a> |
|
|
21
24
|
| {@link SourceMap} | SubClass of Maps - generated by the {@link module:group} and reducible with {@link module:aggregate}|
|
|
22
25
|
| {@link TableGenerator} | Class that can filter, sorts, manage and then generate HTML, CSV, Markdown, etc. |
|
|
23
26
|
|
|
@@ -25,7 +28,9 @@ See the [#Installation section for requirements and installation](#install)
|
|
|
25
28
|
|
|
26
29
|
## What's New
|
|
27
30
|
|
|
28
|
-
* 1.
|
|
31
|
+
* 1.6 - add SVG support for rendering SVGs and animations with {@link module:svg}.
|
|
32
|
+
* 1.5 - Add LaTeX / KaTeX support with {@link module:latex} for rendering Math formulas and PlantUML support for Diagrams
|
|
33
|
+
* 1.4 - Add in vega embed, vega mimetypes with {@link module:vega} and example choropleth tutorial
|
|
29
34
|
* 1.3 - Add {@link module:leaflet|Leaflet} for Maps, allow Vega to use {@link module:vega.svgFromSpec|explicit specs} (so [Examples can be copied and pasted](https://vega.github.io/vega-lite/examples/), and add in {@link module:ijs.htmlScript|htmlScripts}
|
|
30
35
|
|
|
31
36
|
-------
|
|
@@ -171,6 +176,10 @@ utils.vega.svg((vl) => vl.markPoint()
|
|
|
171
176
|
|
|
172
177
|

|
|
173
178
|
|
|
179
|
+
and more from {@link module:vega}
|
|
180
|
+
|
|
181
|
+

|
|
182
|
+
|
|
174
183
|
## Create a Data Driven Map
|
|
175
184
|
|
|
176
185
|
(See the {@tutorial vega_choroplethShort} tutorial for more)
|
|
@@ -199,6 +208,13 @@ utils.ijs.htmlScript({
|
|
|
199
208
|
|
|
200
209
|

|
|
201
210
|
|
|
211
|
+
## Create Animations
|
|
212
|
+
|
|
213
|
+
(See the {@tutorial noiseVisualization} tutorial or {@link module:svg|svg module} for more)
|
|
214
|
+
|
|
215
|
+

|
|
216
|
+

|
|
217
|
+
|
|
202
218
|
<a name="install"> </a>
|
|
203
219
|
# Install
|
|
204
220
|
|
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@ See documentation at: [https://jupyter-ijavascript-utils.onrender.com/](https://
|
|
|
18
18
|
|
|
19
19
|
# What's New
|
|
20
20
|
|
|
21
|
+
* 1.6 - add SVG support for rendering SVGs and animations
|
|
22
|
+
* 1.5 - Add Latex support for rendering Math formulas and PlantUML support for Diagrams
|
|
21
23
|
* 1.4 - Add in vega embed, vega mimetypes and example choropleth tutorial
|
|
22
24
|
* 1.3 - Add Leaflet for Maps, allow Vega to use explicit specs (so [Examples can be copied and pasted](https://vega.github.io/vega-lite/examples/), and add in htmlScripts
|
|
23
25
|
|
|
@@ -184,6 +186,13 @@ utils.ijs.htmlScript({
|
|
|
184
186
|
|
|
185
187
|

|
|
186
188
|
|
|
189
|
+
## Create Animations
|
|
190
|
+
|
|
191
|
+
(See the {@tutorial noiseVisualization} tutorial or {@link module:svg|svg module} for more)
|
|
192
|
+
|
|
193
|
+

|
|
194
|
+

|
|
195
|
+
|
|
187
196
|
# License
|
|
188
197
|
|
|
189
198
|
See [License](https://jupyter-ijavascript-utils.onrender.com/LICENSE) (MIT License).
|
package/TODO.md
CHANGED
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
[
|
|
2
|
-
|
|
3
|
-
[X] Example massaging data to create a table and chart
|
|
4
|
-
[ ] Finish example walkthrough
|
|
5
|
-
[X] update the docs file index`
|
|
6
|
-
[X] check there is an index for all modules and classes
|
|
7
|
-
[X] aggregate
|
|
8
|
-
[X] array
|
|
9
|
-
[X] base64
|
|
10
|
-
[X] datasets
|
|
11
|
-
[X] file
|
|
12
|
-
[X] format
|
|
13
|
-
[X] group
|
|
14
|
-
[X] ijs
|
|
15
|
-
[X] object
|
|
16
|
-
[X] set
|
|
17
|
-
[X] vega
|
|
18
|
-
[X] SourceMap
|
|
19
|
-
[X] TableGenerator
|
|
20
|
-
[X] check there are examples for all the methods
|
|
21
|
-
[X] aggregate
|
|
22
|
-
[X] array
|
|
23
|
-
[X] base64
|
|
24
|
-
[X] datasets
|
|
25
|
-
[X] file
|
|
26
|
-
[X] format
|
|
27
|
-
[X] group
|
|
28
|
-
[X] ijs
|
|
29
|
-
[X] object
|
|
30
|
-
[X] set
|
|
31
|
-
[X] vega
|
|
32
|
-
[X] SourceMap
|
|
33
|
-
[X] TableGenerator
|
|
34
|
-
[ ] Add in Geo
|
|
35
|
-
[ ] npm install i18n-iso-countries world-atlas sane-topojson
|
|
36
|
-
[ ] review https://github.com/michaelwittig/node-i18n-iso-countries
|
|
37
|
-
[ ] learn more about transforms here - https://observablehq.com/@blzzz/how-to-do-a-simple-but-useful-data-transform-in-vega
|
|
1
|
+
[ ] - Update the HtmlScript to use [ShadowRoot](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) for appending the scripts and styles
|
|
2
|
+
[ ] - Revisit Mermaid as option instead of PlantUML
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="marks" width="330" height="242" viewBox="0 0 330 242"><rect width="330" height="242" fill="white"/><g fill="none" stroke-miterlimit="10" transform="translate(59,5)"><g class="mark-group role-frame root" role="graphics-object" aria-roledescription="group mark container"><g transform="translate(0,0)"><path class="background" aria-hidden="true" d="M0.5,0.5h200v200h-200Z" stroke="#ddd"/><g><g class="mark-group role-axis" aria-hidden="true"><g transform="translate(0.5,200.5)"><path class="background" aria-hidden="true" d="M0,0h0v0h0Z" pointer-events="none"/><g><g class="mark-rule role-axis-grid" pointer-events="none"><line transform="translate(0,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(33,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(67,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(100,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(133,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(167,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(200,-200)" x2="0" y2="200" stroke="#ddd" stroke-width="1" opacity="1"/></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g><g class="mark-group role-axis" aria-hidden="true"><g transform="translate(0.5,0.5)"><path class="background" aria-hidden="true" d="M0,0h0v0h0Z" pointer-events="none"/><g><g class="mark-rule role-axis-grid" pointer-events="none"><line transform="translate(0,200)" x2="200" y2="0" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(0,144)" x2="200" y2="0" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(0,89)" x2="200" y2="0" stroke="#ddd" stroke-width="1" opacity="1"/><line transform="translate(0,33)" x2="200" y2="0" stroke="#ddd" stroke-width="1" opacity="1"/></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g><g class="mark-group role-axis" role="graphics-symbol" aria-roledescription="axis" aria-label="X-axis titled 'index' for a linear scale with values from 0 to 30"><g transform="translate(0.5,200.5)"><path class="background" aria-hidden="true" d="M0,0h0v0h0Z" pointer-events="none"/><g><g class="mark-rule role-axis-tick" pointer-events="none"><line transform="translate(0,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(33,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(67,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(100,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(133,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(167,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(200,0)" x2="0" y2="5" stroke="#888" stroke-width="1" opacity="1"/></g><g class="mark-text role-axis-label" pointer-events="none"><text text-anchor="start" transform="translate(0,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">0</text><text text-anchor="middle" transform="translate(33.33333333333333,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">5</text><text text-anchor="middle" transform="translate(66.66666666666666,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">10</text><text text-anchor="middle" transform="translate(100,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">15</text><text text-anchor="middle" transform="translate(133.33333333333331,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">20</text><text text-anchor="middle" transform="translate(166.66666666666669,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">25</text><text text-anchor="end" transform="translate(200,15)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">30</text></g><g class="mark-rule role-axis-domain" pointer-events="none"><line transform="translate(0,0)" x2="200" y2="0" stroke="#888" stroke-width="1" opacity="1"/></g><g class="mark-text role-axis-title" pointer-events="none"><text text-anchor="middle" transform="translate(100,30)" font-family="sans-serif" font-size="11px" font-weight="bold" fill="#000" opacity="1">index</text></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g><g class="mark-group role-axis" role="graphics-symbol" aria-roledescription="axis" aria-label="Y-axis titled 'Value from Noise' for a linear scale with values from −1.0 to 0.8"><g transform="translate(0.5,0.5)"><path class="background" aria-hidden="true" d="M0,0h0v0h0Z" pointer-events="none"/><g><g class="mark-rule role-axis-tick" pointer-events="none"><line transform="translate(0,200)" x2="-5" y2="0" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(0,144)" x2="-5" y2="0" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(0,89)" x2="-5" y2="0" stroke="#888" stroke-width="1" opacity="1"/><line transform="translate(0,33)" x2="-5" y2="0" stroke="#888" stroke-width="1" opacity="1"/></g><g class="mark-text role-axis-label" pointer-events="none"><text text-anchor="end" transform="translate(-7,203)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">−1.0</text><text text-anchor="end" transform="translate(-7,147.44444444444443)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">−0.5</text><text text-anchor="end" transform="translate(-7,91.88888888888889)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">0.0</text><text text-anchor="end" transform="translate(-7,36.33333333333335)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">0.5</text></g><g class="mark-rule role-axis-domain" pointer-events="none"><line transform="translate(0,200)" x2="0" y2="-200" stroke="#888" stroke-width="1" opacity="1"/></g><g class="mark-text role-axis-title" pointer-events="none"><text text-anchor="middle" transform="translate(-43,100) rotate(-90) translate(0,-2)" font-family="sans-serif" font-size="11px" font-weight="bold" fill="#000" opacity="1">Value from Noise</text></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g><g class="mark-line role-mark child__layer_xAmt_marks" role="graphics-object" aria-roledescription="line mark container"><path aria-label="index: 0; Value from Noise: 0" role="graphics-symbol" aria-roledescription="line mark" d="M0,88.88888888888889L6.666666666666667,131.97283279012345L13.333333333333334,157.62248050480108L20,149.63132800000002L26.666666666666668,107.43884062551443L33.33333333333333,52.52551440329223L40,13.736113777777792L46.666666666666664,7.127009668038453L53.333333333333336,26.967967956104278L60,59.11916444444447L66.66666666666666,88.88888888888889L73.33333333333333,102.85026567901237L80,97.03926044444442L86.66666666666667,79.57786745679014L93.33333333333333,64.89207150617288L100,62.68518518518525L106.66666666666667,76.6475833123L113.33333333333333,105.83763605304073L120,140.6095834074074L126.66666666666666,166.19478124919976L133.33333333333331,173.34439871970736L140,159.43276088888885L146.66666666666666,130.20281649748512L153.33333333333334,97.99874187471414L160,75.21871407407403L166.66666666666669,67.99364426154551L173.33333333333334,73.54532333973481L180,82.93127585185186L186.66666666666666,88.18855836854138L193.33333333333334,88.88888490900777" stroke="#4c78a8" stroke-width="2"/></g><g class="mark-line role-mark child__layer_yAmt_marks" role="graphics-object" aria-roledescription="line mark container"><path aria-label="index: 0; Value from Noise: 0" role="graphics-symbol" aria-roledescription="line mark" d="M0,88.88888888888889L6.666666666666667,45.80493468678555L13.333333333333334,18.254336146319194L20,10.736875851851835L26.666666666666668,20.099101117512607L33.33333333333333,41.138088705989986L40,68.04933451851853L46.666666666666664,97.62553447828077L53.333333333333336,130.38376006584363L60,162.5218512592592L66.66666666666666,185.33086419753076L73.33333333333333,192.10184107544578L80,180.42268207407398L86.66666666666667,153.53310942112478L93.33333333333333,122.6481330919066L100,97.95925925925926L106.66666666666667,82.36493645724734L113.33333333333333,75.76030093461361L120,78.49842725925926L126.66666666666666,85.02727135985369L133.33333333333331,88.88888888888889L140,89.35225244444445L146.66666666666666,88.94228669044352L153.33333333333334,88.93078986739826L160,89.11913481481481L166.66666666666669,89.24435299497028L173.33333333333334,89.1221688888889L180,88.9349688888889L186.66666666666666,88.88892444444446L193.33333333333334,88.88888888888889" stroke="#f58518" stroke-width="2"/></g><g class="mark-line role-mark child__layer_zAmt_marks" role="graphics-object" aria-roledescription="line mark container"><path aria-label="index: 0; Value from Noise: 0" role="graphics-symbol" aria-roledescription="line mark" d="M0,88.88888888888889L6.666666666666667,88.88888490900777L13.333333333333334,88.18852992409694L20,82.89901985185185L26.666666666666668,73.4053553397348L33.33333333333333,67.81614083219023L40,75.13450429629631L46.666666666666664,97.9974549391861L53.333333333333336,130.0247354586191L60,156.34367051851848L66.66666666666666,161.3579332418838L73.33333333333333,140.3121628678555L80,102.3498524444444L86.66666666666667,66.36963214631922L93.33333333333333,51.28484456881577L100,61.737037037037034L106.66666666666667,79.76336700868774L113.33333333333333,81.16487408139004L120,61.6198186666667L126.66666666666666,33.546559985368084L133.33333333333331,16.419844535893937L140,21.897470814814834L146.66666666666666,47.80675704801099L153.33333333333334,79.76608093644269L160,102.55056829629635L166.66666666666669,109.78390489254686L173.33333333333334,104.23245443804299L180,94.84650192592592L186.66666666666666,89.5892194092364L193.33333333333334,88.88889286877" stroke="#e45756" stroke-width="2"/></g><g class="mark-group role-legend" role="graphics-symbol" aria-roledescription="legend" aria-label="Symbol legend for stroke color with 3 values: xAmt, yAmt, zAmt"><g transform="translate(218,0)"><path class="background" aria-hidden="true" d="M0,0h48v37h-48Z" pointer-events="none"/><g><g class="mark-group role-legend-entry"><g transform="translate(0,0)"><path class="background" aria-hidden="true" d="M0,0h0v0h0Z" pointer-events="none"/><g><g class="mark-group role-scope" role="graphics-object" aria-roledescription="group mark container"><g transform="translate(0,0)"><path class="background" aria-hidden="true" d="M0,0h48v11h-48Z" pointer-events="none" opacity="1"/><g><g class="mark-symbol role-legend-symbol" pointer-events="none"><path transform="translate(6,6)" d="M-5,0L5,0" stroke="#4c78a8" stroke-width="1.5" opacity="1"/></g><g class="mark-text role-legend-label" pointer-events="none"><text text-anchor="start" transform="translate(16,9)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">xAmt</text></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g><g transform="translate(0,13)"><path class="background" aria-hidden="true" d="M0,0h48v11h-48Z" pointer-events="none" opacity="1"/><g><g class="mark-symbol role-legend-symbol" pointer-events="none"><path transform="translate(6,6)" d="M-5,0L5,0" stroke="#f58518" stroke-width="1.5" opacity="1"/></g><g class="mark-text role-legend-label" pointer-events="none"><text text-anchor="start" transform="translate(16,9)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">yAmt</text></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g><g transform="translate(0,26)"><path class="background" aria-hidden="true" d="M0,0h48v11h-48Z" pointer-events="none" opacity="1"/><g><g class="mark-symbol role-legend-symbol" pointer-events="none"><path transform="translate(6,6)" d="M-5,0L5,0" stroke="#e45756" stroke-width="1.5" opacity="1"/></g><g class="mark-text role-legend-label" pointer-events="none"><text text-anchor="start" transform="translate(16,9)" font-family="sans-serif" font-size="10px" fill="#000" opacity="1">zAmt</text></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g></g><path class="foreground" aria-hidden="true" d="" pointer-events="none" display="none"/></g></g></g><path class="foreground" aria-hidden="true" d="" display="none"/></g></g></g></svg>
|