fluxplot 0.1.0__py3-none-any.whl

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.
Files changed (65) hide show
  1. fluxplot/__init__.py +115 -0
  2. fluxplot/_fieldmap.py +97 -0
  3. fluxplot/_mesh_reduce.py +54 -0
  4. fluxplot/_scene3d_size.py +95 -0
  5. fluxplot/_viewer/THIRD-PARTY.txt +23 -0
  6. fluxplot/_viewer/flux-model3d-viewer.min.js +4221 -0
  7. fluxplot/_viewer/stamp.json +4 -0
  8. fluxplot/api.py +1196 -0
  9. fluxplot/autotag.py +164 -0
  10. fluxplot/base.mplstyle +0 -0
  11. fluxplot/brackets.py +242 -0
  12. fluxplot/canonical_json.py +23 -0
  13. fluxplot/capture.py +150 -0
  14. fluxplot/colorcheck.py +285 -0
  15. fluxplot/colors.py +727 -0
  16. fluxplot/colorscale.py +477 -0
  17. fluxplot/data.py +178 -0
  18. fluxplot/definitions/colormaps.json +1639 -0
  19. fluxplot/definitions/flexoki.tokens.json +2571 -0
  20. fluxplot/definitions/palettes.json +2547 -0
  21. fluxplot/descriptors.py +87 -0
  22. fluxplot/fields.py +611 -0
  23. fluxplot/fits.py +240 -0
  24. fluxplot/glb.py +84 -0
  25. fluxplot/ids.py +173 -0
  26. fluxplot/images.py +362 -0
  27. fluxplot/integrity.py +27 -0
  28. fluxplot/manifest.py +788 -0
  29. fluxplot/mesh3d.py +376 -0
  30. fluxplot/panels.py +284 -0
  31. fluxplot/postprocess.py +638 -0
  32. fluxplot/presets.py +66 -0
  33. fluxplot/provenance.py +177 -0
  34. fluxplot/raster.py +295 -0
  35. fluxplot/recipe.py +178 -0
  36. fluxplot/render.py +66 -0
  37. fluxplot/roles.py +147 -0
  38. fluxplot/scene3d.py +386 -0
  39. fluxplot/scene3d_manifest.py +112 -0
  40. fluxplot/scene3d_viewer.py +633 -0
  41. fluxplot/schemas/.gitkeep +0 -0
  42. fluxplot/schemas/manifest.schema.json +2479 -0
  43. fluxplot/schemas/recipe.schema.json +179 -0
  44. fluxplot/schemas/scene3d.schema.json +461 -0
  45. fluxplot/seaborn_adapters.py +323 -0
  46. fluxplot/signature_fluxplots/__init__.py +18 -0
  47. fluxplot/signature_fluxplots/_colour.py +412 -0
  48. fluxplot/signature_fluxplots/fluxbox.py +433 -0
  49. fluxplot/signature_fluxplots/glowbar.py +769 -0
  50. fluxplot/signature_fluxplots/hexmatrix.py +927 -0
  51. fluxplot/stats/__init__.py +63 -0
  52. fluxplot/stats/_common.py +196 -0
  53. fluxplot/stats/multi_group.py +443 -0
  54. fluxplot/stats/paired.py +209 -0
  55. fluxplot/stats/two_group.py +149 -0
  56. fluxplot/style.py +469 -0
  57. fluxplot/surface.py +487 -0
  58. fluxplot/surface3d.py +197 -0
  59. fluxplot/tagger.py +561 -0
  60. fluxplot/version.py +19 -0
  61. fluxplot-0.1.0.dist-info/METADATA +1199 -0
  62. fluxplot-0.1.0.dist-info/RECORD +65 -0
  63. fluxplot-0.1.0.dist-info/WHEEL +4 -0
  64. fluxplot-0.1.0.dist-info/licenses/LICENSE +21 -0
  65. fluxplot-0.1.0.dist-info/licenses/THIRD_PARTY_NOTICES.md +472 -0
@@ -0,0 +1,2479 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://flux.dev/schemas/fluxplot-manifest-0.3.2.json",
4
+ "title": "FluxPlot manifest",
5
+ "type": "object",
6
+ "required": [
7
+ "spec",
8
+ "schemaVersion",
9
+ "plotType",
10
+ "svg",
11
+ "size",
12
+ "axes",
13
+ "series",
14
+ "parts",
15
+ "build"
16
+ ],
17
+ "properties": {
18
+ "spec": {
19
+ "const": "fluxplot/manifest"
20
+ },
21
+ "schemaVersion": {
22
+ "type": "string"
23
+ },
24
+ "generator": {
25
+ "type": "object",
26
+ "properties": {
27
+ "name": {
28
+ "type": "string"
29
+ },
30
+ "version": {
31
+ "type": "string"
32
+ },
33
+ "matplotlib": {
34
+ "type": "string"
35
+ }
36
+ }
37
+ },
38
+ "plotType": {
39
+ "type": "string"
40
+ },
41
+ "svg": {
42
+ "type": "string"
43
+ },
44
+ "artifact": {
45
+ "type": "object",
46
+ "properties": {
47
+ "svgSha256": {
48
+ "type": "string",
49
+ "pattern": "^[0-9a-f]{64}$"
50
+ }
51
+ }
52
+ },
53
+ "size": {
54
+ "type": "object",
55
+ "properties": {
56
+ "width": {
57
+ "type": "number",
58
+ "exclusiveMinimum": 0
59
+ },
60
+ "height": {
61
+ "type": "number",
62
+ "exclusiveMinimum": 0
63
+ },
64
+ "unit": {
65
+ "type": "string"
66
+ }
67
+ },
68
+ "required": [
69
+ "width",
70
+ "height",
71
+ "unit"
72
+ ]
73
+ },
74
+ "axes": {
75
+ "type": "array",
76
+ "items": {
77
+ "type": "object",
78
+ "properties": {
79
+ "id": {
80
+ "type": "string"
81
+ },
82
+ "svgId": {
83
+ "type": "string"
84
+ },
85
+ "panelId": {
86
+ "type": "string"
87
+ },
88
+ "projection": {
89
+ "type": "string"
90
+ },
91
+ "x": {
92
+ "$ref": "#/definitions/axis"
93
+ },
94
+ "y": {
95
+ "$ref": "#/definitions/axis"
96
+ },
97
+ "pixelBox": {
98
+ "type": "object",
99
+ "properties": {
100
+ "x0": {
101
+ "type": "number"
102
+ },
103
+ "y0": {
104
+ "type": "number"
105
+ },
106
+ "x1": {
107
+ "type": "number"
108
+ },
109
+ "y1": {
110
+ "type": "number"
111
+ }
112
+ },
113
+ "required": [
114
+ "x0",
115
+ "y0",
116
+ "x1",
117
+ "y1"
118
+ ]
119
+ },
120
+ "x2": {
121
+ "$ref": "#/definitions/axis",
122
+ "description": "A twiny's value axis (shares y with the panel)."
123
+ },
124
+ "y2": {
125
+ "$ref": "#/definitions/axis",
126
+ "description": "A twinx's value axis (shares x with the panel)."
127
+ }
128
+ },
129
+ "required": [
130
+ "x",
131
+ "y"
132
+ ]
133
+ }
134
+ },
135
+ "series": {
136
+ "type": "array",
137
+ "items": {
138
+ "$ref": "#/definitions/series"
139
+ }
140
+ },
141
+ "guides": {
142
+ "type": "array",
143
+ "items": {
144
+ "$ref": "#/definitions/guide"
145
+ }
146
+ },
147
+ "overlays": {
148
+ "type": "array",
149
+ "items": {
150
+ "$ref": "#/definitions/overlay"
151
+ }
152
+ },
153
+ "parts": {
154
+ "allOf": [
155
+ {
156
+ "$ref": "#/definitions/partNode"
157
+ }
158
+ ],
159
+ "required": [
160
+ "id",
161
+ "role"
162
+ ]
163
+ },
164
+ "build": {
165
+ "type": "object",
166
+ "properties": {
167
+ "order": {
168
+ "type": "array",
169
+ "items": {
170
+ "type": "string"
171
+ }
172
+ },
173
+ "presets": {
174
+ "type": "object",
175
+ "description": "Per-role build-animation hints, keyed by role (a consumer may override everything).",
176
+ "additionalProperties": {
177
+ "type": "object",
178
+ "properties": {
179
+ "animation": {
180
+ "enum": [
181
+ "draw-on",
182
+ "fade-in",
183
+ "stagger-in",
184
+ "grow-from-baseline",
185
+ "fade-rise",
186
+ "write-on",
187
+ "pop-in"
188
+ ]
189
+ },
190
+ "durationMs": {
191
+ "type": "number",
192
+ "minimum": 0
193
+ },
194
+ "delayMs": {
195
+ "type": "number",
196
+ "minimum": 0
197
+ },
198
+ "staggerMs": {
199
+ "type": "number",
200
+ "minimum": 0
201
+ },
202
+ "staggerBy": {
203
+ "enum": [
204
+ "x",
205
+ "y",
206
+ "index",
207
+ "value",
208
+ "count",
209
+ "category"
210
+ ]
211
+ }
212
+ },
213
+ "required": [
214
+ "animation"
215
+ ]
216
+ }
217
+ }
218
+ },
219
+ "required": [
220
+ "order"
221
+ ]
222
+ },
223
+ "panels": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "object",
227
+ "properties": {
228
+ "id": {
229
+ "type": "string"
230
+ },
231
+ "svgId": {
232
+ "type": "string"
233
+ },
234
+ "label": {
235
+ "type": "string"
236
+ },
237
+ "index": {
238
+ "type": "integer"
239
+ },
240
+ "insetOf": {
241
+ "type": "string",
242
+ "description": "The panel this panel is an inset of (ax.inset_axes)."
243
+ }
244
+ },
245
+ "required": [
246
+ "id",
247
+ "svgId"
248
+ ]
249
+ }
250
+ },
251
+ "colorScales": {
252
+ "type": "array",
253
+ "items": {
254
+ "$ref": "#/definitions/colorScale"
255
+ },
256
+ "description": "Portable colour scales, one per colour-control key; see definitions/colorScale."
257
+ },
258
+ "style": {
259
+ "type": "object",
260
+ "required": [
261
+ "theme",
262
+ "tokens"
263
+ ],
264
+ "description": "The theme in force at save: its name (null once the rcParams were changed by hand) and the scaffold colours by token (ink, label, tick, axis, grid, plot, paper), which data-ink-fill / data-ink-stroke on scaffold elements refer to.",
265
+ "properties": {
266
+ "theme": {
267
+ "type": [
268
+ "string",
269
+ "null"
270
+ ]
271
+ },
272
+ "tokens": {
273
+ "type": "object",
274
+ "required": [
275
+ "ink",
276
+ "label",
277
+ "tick",
278
+ "axis",
279
+ "grid",
280
+ "plot",
281
+ "paper"
282
+ ],
283
+ "properties": {
284
+ "ink": {
285
+ "type": "string",
286
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
287
+ },
288
+ "label": {
289
+ "type": "string",
290
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
291
+ },
292
+ "tick": {
293
+ "type": "string",
294
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
295
+ },
296
+ "axis": {
297
+ "type": "string",
298
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
299
+ },
300
+ "grid": {
301
+ "type": "string",
302
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
303
+ },
304
+ "plot": {
305
+ "type": "string",
306
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
307
+ },
308
+ "paper": {
309
+ "type": "string",
310
+ "pattern": "^#[0-9a-f]{6}([0-9a-f]{2})?$"
311
+ }
312
+ }
313
+ }
314
+ }
315
+ },
316
+ "quality": {
317
+ "type": "object",
318
+ "description": "Lint findings recorded at save (fp.save(lint=...)): quality.color lists colorcheck findings.",
319
+ "properties": {
320
+ "color": {
321
+ "type": "array",
322
+ "items": {
323
+ "type": "object",
324
+ "required": [
325
+ "kind",
326
+ "a",
327
+ "value",
328
+ "threshold",
329
+ "message"
330
+ ],
331
+ "properties": {
332
+ "kind": {
333
+ "enum": [
334
+ "cvd-confusable",
335
+ "greyscale-confusable",
336
+ "low-contrast-mark",
337
+ "low-contrast-text",
338
+ "non-uniform",
339
+ "non-monotone"
340
+ ]
341
+ },
342
+ "a": {
343
+ "type": "string"
344
+ },
345
+ "b": {
346
+ "type": [
347
+ "string",
348
+ "null"
349
+ ]
350
+ },
351
+ "value": {
352
+ "type": "number"
353
+ },
354
+ "threshold": {
355
+ "type": "number"
356
+ },
357
+ "message": {
358
+ "type": "string"
359
+ }
360
+ }
361
+ }
362
+ }
363
+ }
364
+ },
365
+ "idAliases": {
366
+ "type": "object",
367
+ "description": "Ids an older fluxplot gave the same parts: old id (or old id prefix, for a series root) → current id. Resolve saved overrides through it; kept for one minor version after a rename.",
368
+ "additionalProperties": {
369
+ "type": "string"
370
+ }
371
+ },
372
+ "figure": {
373
+ "type": "object",
374
+ "description": "Figure-scope parts (unprefixed ids): the suptitle, sup-labels, figure legends, fig.text annotations and the figure's own extra artists.",
375
+ "properties": {
376
+ "title": {
377
+ "type": "string"
378
+ },
379
+ "xlabel": {
380
+ "type": "string"
381
+ },
382
+ "ylabel": {
383
+ "type": "string"
384
+ },
385
+ "legends": {
386
+ "type": "array",
387
+ "items": {
388
+ "type": "string"
389
+ }
390
+ },
391
+ "annotations": {
392
+ "type": "array",
393
+ "items": {
394
+ "type": "object",
395
+ "required": [
396
+ "id"
397
+ ],
398
+ "properties": {
399
+ "id": {
400
+ "type": "string"
401
+ },
402
+ "text": {
403
+ "type": [
404
+ "string",
405
+ "null"
406
+ ]
407
+ }
408
+ }
409
+ }
410
+ },
411
+ "extras": {
412
+ "type": "array",
413
+ "items": {
414
+ "type": "string"
415
+ }
416
+ },
417
+ "background": {
418
+ "type": "string"
419
+ }
420
+ }
421
+ }
422
+ },
423
+ "definitions": {
424
+ "axis": {
425
+ "type": "object",
426
+ "properties": {
427
+ "scale": {
428
+ "type": "string"
429
+ },
430
+ "label": {
431
+ "type": "string"
432
+ },
433
+ "base": {
434
+ "type": "number"
435
+ },
436
+ "domain": {
437
+ "type": "array",
438
+ "items": {
439
+ "type": "number"
440
+ },
441
+ "minItems": 2,
442
+ "maxItems": 2
443
+ },
444
+ "anchors": {
445
+ "type": "array",
446
+ "items": {
447
+ "type": "object",
448
+ "properties": {
449
+ "data": {
450
+ "type": "number"
451
+ },
452
+ "svg": {
453
+ "type": "number"
454
+ }
455
+ },
456
+ "required": [
457
+ "data",
458
+ "svg"
459
+ ]
460
+ },
461
+ "minItems": 0
462
+ },
463
+ "supported": {
464
+ "type": "boolean"
465
+ },
466
+ "ticks": {
467
+ "type": "array",
468
+ "items": {
469
+ "type": "object",
470
+ "properties": {
471
+ "value": {
472
+ "type": "number"
473
+ },
474
+ "label": {
475
+ "type": "string"
476
+ }
477
+ },
478
+ "required": [
479
+ "value",
480
+ "label"
481
+ ]
482
+ }
483
+ },
484
+ "units": {
485
+ "type": "object",
486
+ "properties": {
487
+ "kind": {
488
+ "type": "string"
489
+ },
490
+ "epoch": {
491
+ "type": "string"
492
+ },
493
+ "unit": {
494
+ "type": "string"
495
+ }
496
+ },
497
+ "required": [
498
+ "kind"
499
+ ]
500
+ },
501
+ "tickLocator": {
502
+ "type": "string"
503
+ },
504
+ "tickFormatter": {
505
+ "type": "string"
506
+ },
507
+ "secondary": {
508
+ "type": "object",
509
+ "description": "A secondary axis: samples of the parent → secondary transform.",
510
+ "required": [
511
+ "of",
512
+ "samples"
513
+ ],
514
+ "properties": {
515
+ "of": {
516
+ "type": "string",
517
+ "enum": [
518
+ "x",
519
+ "y"
520
+ ]
521
+ },
522
+ "samples": {
523
+ "type": "array",
524
+ "items": {
525
+ "type": "array",
526
+ "items": {
527
+ "type": "number"
528
+ },
529
+ "minItems": 2,
530
+ "maxItems": 2
531
+ }
532
+ }
533
+ }
534
+ }
535
+ },
536
+ "required": [
537
+ "scale",
538
+ "domain",
539
+ "anchors"
540
+ ],
541
+ "allOf": [
542
+ {
543
+ "if": {
544
+ "properties": {
545
+ "supported": {
546
+ "const": true
547
+ }
548
+ },
549
+ "required": [
550
+ "supported"
551
+ ]
552
+ },
553
+ "then": {
554
+ "properties": {
555
+ "scale": {
556
+ "enum": [
557
+ "linear",
558
+ "log"
559
+ ]
560
+ },
561
+ "anchors": {
562
+ "minItems": 2
563
+ }
564
+ }
565
+ }
566
+ }
567
+ ]
568
+ },
569
+ "normalization": {
570
+ "type": "object",
571
+ "properties": {
572
+ "kind": {
573
+ "type": "string"
574
+ },
575
+ "vmin": {
576
+ "type": [
577
+ "number",
578
+ "null"
579
+ ]
580
+ },
581
+ "vmax": {
582
+ "type": [
583
+ "number",
584
+ "null"
585
+ ]
586
+ },
587
+ "clip": {
588
+ "type": "boolean"
589
+ },
590
+ "vcenter": {
591
+ "type": "number"
592
+ },
593
+ "halfrange": {
594
+ "type": [
595
+ "number",
596
+ "null"
597
+ ]
598
+ },
599
+ "gamma": {
600
+ "type": "number"
601
+ },
602
+ "linthresh": {
603
+ "type": "number"
604
+ },
605
+ "linscale": {
606
+ "type": "number"
607
+ },
608
+ "base": {
609
+ "type": "number"
610
+ },
611
+ "boundaries": {
612
+ "type": "array",
613
+ "items": {
614
+ "type": [
615
+ "number",
616
+ "null"
617
+ ]
618
+ }
619
+ }
620
+ },
621
+ "required": [
622
+ "kind",
623
+ "vmin",
624
+ "vmax",
625
+ "clip"
626
+ ],
627
+ "description": "A matplotlib norm by class name (alias of colorScales[].norm, whose kind is portable)."
628
+ },
629
+ "field": {
630
+ "type": "object",
631
+ "properties": {
632
+ "kind": {
633
+ "enum": [
634
+ "heatmap",
635
+ "contour",
636
+ "contourf",
637
+ "hexbin",
638
+ "scatter"
639
+ ]
640
+ },
641
+ "shape": {
642
+ "type": "array",
643
+ "items": {
644
+ "type": "integer"
645
+ }
646
+ },
647
+ "controlKey": {
648
+ "type": "string"
649
+ },
650
+ "colorScale": {
651
+ "type": "string"
652
+ },
653
+ "includeValues": {
654
+ "type": "boolean"
655
+ },
656
+ "normalization": {
657
+ "$ref": "#/definitions/normalization"
658
+ },
659
+ "cmap": {
660
+ "type": "string"
661
+ },
662
+ "cmapSpec": {
663
+ "type": [
664
+ "string",
665
+ "object"
666
+ ],
667
+ "description": "How the recipe names the map: a resolvable name, or the portable {lut, under, over, bad} table."
668
+ },
669
+ "extend": {
670
+ "enum": [
671
+ "neither",
672
+ "min",
673
+ "max",
674
+ "both"
675
+ ]
676
+ },
677
+ "label": {
678
+ "type": [
679
+ "string",
680
+ "null"
681
+ ]
682
+ },
683
+ "missingColor": {
684
+ "type": "array",
685
+ "items": {
686
+ "type": "number"
687
+ },
688
+ "minItems": 4,
689
+ "maxItems": 4
690
+ },
691
+ "underColor": {
692
+ "type": "array",
693
+ "items": {
694
+ "type": "number"
695
+ },
696
+ "minItems": 4,
697
+ "maxItems": 4
698
+ },
699
+ "overColor": {
700
+ "type": "array",
701
+ "items": {
702
+ "type": "number"
703
+ },
704
+ "minItems": 4,
705
+ "maxItems": 4
706
+ },
707
+ "maskedIndices": {
708
+ "type": "array",
709
+ "items": {
710
+ "type": "integer"
711
+ }
712
+ },
713
+ "values": {
714
+ "type": "array",
715
+ "items": {
716
+ "type": "array",
717
+ "items": {
718
+ "type": [
719
+ "number",
720
+ "null"
721
+ ]
722
+ }
723
+ }
724
+ },
725
+ "levels": {
726
+ "type": "array",
727
+ "items": {
728
+ "type": [
729
+ "number",
730
+ "null"
731
+ ]
732
+ }
733
+ },
734
+ "extent": {
735
+ "type": "array",
736
+ "items": {
737
+ "type": "number"
738
+ },
739
+ "minItems": 4,
740
+ "maxItems": 4
741
+ },
742
+ "origin": {
743
+ "type": "string"
744
+ },
745
+ "grid": {
746
+ "type": "object",
747
+ "properties": {
748
+ "x": {
749
+ "type": "array"
750
+ },
751
+ "y": {
752
+ "type": "array"
753
+ }
754
+ }
755
+ }
756
+ },
757
+ "required": [
758
+ "kind",
759
+ "controlKey",
760
+ "normalization",
761
+ "cmap"
762
+ ],
763
+ "description": "A colour-mapped mark's source-data colour contract (the portable law is colorScales[field.colorScale])."
764
+ },
765
+ "distribution": {
766
+ "type": "object",
767
+ "properties": {
768
+ "binEdges": {
769
+ "type": "array",
770
+ "items": {
771
+ "type": [
772
+ "number",
773
+ "null"
774
+ ]
775
+ }
776
+ },
777
+ "counts": {
778
+ "type": "array",
779
+ "items": {
780
+ "type": [
781
+ "number",
782
+ "null"
783
+ ]
784
+ }
785
+ },
786
+ "normalization": {
787
+ "type": "string"
788
+ },
789
+ "weighted": {
790
+ "type": "boolean"
791
+ },
792
+ "cumulative": {
793
+ "type": [
794
+ "boolean",
795
+ "number"
796
+ ]
797
+ },
798
+ "orientation": {
799
+ "type": "string"
800
+ },
801
+ "values": {
802
+ "type": "array",
803
+ "items": {
804
+ "type": [
805
+ "number",
806
+ "null"
807
+ ]
808
+ }
809
+ }
810
+ }
811
+ },
812
+ "signatureStats": {
813
+ "type": "object",
814
+ "properties": {
815
+ "part": {
816
+ "type": "string"
817
+ },
818
+ "category": {},
819
+ "units": {
820
+ "type": [
821
+ "string",
822
+ "null"
823
+ ]
824
+ },
825
+ "unit": {},
826
+ "categories": {
827
+ "type": "array"
828
+ },
829
+ "colors": {
830
+ "type": "array",
831
+ "items": {
832
+ "type": "string"
833
+ }
834
+ },
835
+ "groupColor": {
836
+ "type": "string"
837
+ },
838
+ "n": {
839
+ "type": "integer"
840
+ },
841
+ "mean": {
842
+ "type": [
843
+ "number",
844
+ "null"
845
+ ]
846
+ },
847
+ "median": {
848
+ "type": [
849
+ "number",
850
+ "null"
851
+ ]
852
+ },
853
+ "sd": {
854
+ "type": [
855
+ "number",
856
+ "null"
857
+ ]
858
+ },
859
+ "sem": {
860
+ "type": [
861
+ "number",
862
+ "null"
863
+ ]
864
+ },
865
+ "q1": {
866
+ "type": [
867
+ "number",
868
+ "null"
869
+ ]
870
+ },
871
+ "q3": {
872
+ "type": [
873
+ "number",
874
+ "null"
875
+ ]
876
+ },
877
+ "interval": {
878
+ "type": "string"
879
+ },
880
+ "low": {
881
+ "type": [
882
+ "number",
883
+ "null"
884
+ ]
885
+ },
886
+ "high": {
887
+ "type": [
888
+ "number",
889
+ "null"
890
+ ]
891
+ },
892
+ "center": {
893
+ "type": "string"
894
+ },
895
+ "centerValue": {
896
+ "type": [
897
+ "number",
898
+ "null"
899
+ ]
900
+ },
901
+ "x": {
902
+ "type": [
903
+ "number",
904
+ "null"
905
+ ]
906
+ },
907
+ "iqr": {
908
+ "type": [
909
+ "number",
910
+ "null"
911
+ ]
912
+ },
913
+ "whis": {},
914
+ "whiskerLow": {
915
+ "type": [
916
+ "number",
917
+ "null"
918
+ ]
919
+ },
920
+ "whiskerHigh": {
921
+ "type": [
922
+ "number",
923
+ "null"
924
+ ]
925
+ },
926
+ "outliers": {
927
+ "type": "array",
928
+ "items": {
929
+ "type": [
930
+ "number",
931
+ "null"
932
+ ]
933
+ }
934
+ },
935
+ "palette": {
936
+ "type": [
937
+ "string",
938
+ "array",
939
+ "null"
940
+ ],
941
+ "items": {
942
+ "type": "string"
943
+ }
944
+ }
945
+ },
946
+ "required": [
947
+ "part"
948
+ ],
949
+ "description": "fp.glowbar / fp.fluxbox payload: part=summary carries the statistics drawn for a category; part=unit a unit's identity."
950
+ },
951
+ "hexmatrix": {
952
+ "type": "object",
953
+ "properties": {
954
+ "orientation": {
955
+ "enum": [
956
+ "pointy",
957
+ "flat"
958
+ ]
959
+ },
960
+ "hexRadius": {
961
+ "type": "number"
962
+ },
963
+ "aspect": {
964
+ "type": [
965
+ "string",
966
+ "number"
967
+ ]
968
+ },
969
+ "scale": {
970
+ "type": "object",
971
+ "properties": {
972
+ "x": {
973
+ "type": "string"
974
+ },
975
+ "y": {
976
+ "type": "string"
977
+ }
978
+ }
979
+ },
980
+ "gridsize": {
981
+ "type": [
982
+ "integer",
983
+ "null"
984
+ ]
985
+ },
986
+ "binwidth": {
987
+ "type": [
988
+ "number",
989
+ "null"
990
+ ]
991
+ },
992
+ "valueLabel": {
993
+ "type": [
994
+ "string",
995
+ "null"
996
+ ]
997
+ },
998
+ "nBins": {
999
+ "type": "integer"
1000
+ },
1001
+ "mode": {
1002
+ "enum": [
1003
+ "points",
1004
+ "matrix"
1005
+ ]
1006
+ },
1007
+ "shape": {
1008
+ "type": "array",
1009
+ "items": {
1010
+ "type": "integer"
1011
+ }
1012
+ },
1013
+ "origin": {
1014
+ "type": "string"
1015
+ },
1016
+ "n": {
1017
+ "type": "integer"
1018
+ },
1019
+ "dropped": {
1020
+ "type": "integer"
1021
+ },
1022
+ "stat": {
1023
+ "type": [
1024
+ "string",
1025
+ "null"
1026
+ ]
1027
+ },
1028
+ "reduce": {
1029
+ "type": [
1030
+ "string",
1031
+ "null"
1032
+ ]
1033
+ },
1034
+ "weighted": {
1035
+ "type": "boolean"
1036
+ },
1037
+ "mincnt": {
1038
+ "type": "integer"
1039
+ },
1040
+ "sparse": {
1041
+ "type": [
1042
+ "integer",
1043
+ "null"
1044
+ ]
1045
+ },
1046
+ "extent": {
1047
+ "type": "array",
1048
+ "items": {
1049
+ "type": "number"
1050
+ },
1051
+ "minItems": 4,
1052
+ "maxItems": 4
1053
+ },
1054
+ "hexArea": {
1055
+ "type": "number"
1056
+ },
1057
+ "boxAspect": {
1058
+ "type": "number"
1059
+ },
1060
+ "bins": {
1061
+ "type": "array",
1062
+ "items": {
1063
+ "type": "object",
1064
+ "properties": {
1065
+ "row": {
1066
+ "type": "integer"
1067
+ },
1068
+ "col": {
1069
+ "type": "integer"
1070
+ },
1071
+ "x": {
1072
+ "type": "number"
1073
+ },
1074
+ "y": {
1075
+ "type": "number"
1076
+ },
1077
+ "count": {
1078
+ "type": [
1079
+ "number",
1080
+ "null"
1081
+ ]
1082
+ },
1083
+ "value": {
1084
+ "type": [
1085
+ "number",
1086
+ "null"
1087
+ ]
1088
+ },
1089
+ "svgId": {
1090
+ "type": "string"
1091
+ }
1092
+ },
1093
+ "required": [
1094
+ "row",
1095
+ "col",
1096
+ "x",
1097
+ "y",
1098
+ "value"
1099
+ ]
1100
+ }
1101
+ }
1102
+ },
1103
+ "required": [
1104
+ "orientation",
1105
+ "hexRadius",
1106
+ "nBins",
1107
+ "bins"
1108
+ ],
1109
+ "description": "fp.hexmatrix payload: the lattice, the statistic and every hexagon drawn."
1110
+ },
1111
+ "surfacePart": {
1112
+ "type": "object",
1113
+ "properties": {
1114
+ "part": {
1115
+ "type": "string"
1116
+ },
1117
+ "ref": {
1118
+ "type": "string"
1119
+ },
1120
+ "kind": {
1121
+ "type": "string"
1122
+ },
1123
+ "color": {},
1124
+ "vmin": {
1125
+ "type": [
1126
+ "number",
1127
+ "null"
1128
+ ]
1129
+ },
1130
+ "vmax": {
1131
+ "type": [
1132
+ "number",
1133
+ "null"
1134
+ ]
1135
+ },
1136
+ "cmap": {
1137
+ "type": "string"
1138
+ },
1139
+ "label": {
1140
+ "type": [
1141
+ "string",
1142
+ "null"
1143
+ ]
1144
+ },
1145
+ "editable": {
1146
+ "type": "array",
1147
+ "items": {
1148
+ "type": "string"
1149
+ }
1150
+ },
1151
+ "views": {
1152
+ "type": "array",
1153
+ "items": {
1154
+ "type": "string"
1155
+ }
1156
+ },
1157
+ "hemispheres": {
1158
+ "type": "array",
1159
+ "items": {
1160
+ "type": "string"
1161
+ }
1162
+ },
1163
+ "missingColor": {},
1164
+ "missingRule": {
1165
+ "type": "object"
1166
+ },
1167
+ "rendering": {
1168
+ "type": "object"
1169
+ },
1170
+ "percentile": {
1171
+ "type": [
1172
+ "array",
1173
+ "null"
1174
+ ]
1175
+ }
1176
+ }
1177
+ },
1178
+ "surface": {
1179
+ "type": "object",
1180
+ "properties": {
1181
+ "kind": {
1182
+ "enum": [
1183
+ "label",
1184
+ "continuous"
1185
+ ]
1186
+ },
1187
+ "cmap": {
1188
+ "type": "string"
1189
+ },
1190
+ "vmin": {
1191
+ "type": [
1192
+ "number",
1193
+ "null"
1194
+ ]
1195
+ },
1196
+ "vmax": {
1197
+ "type": [
1198
+ "number",
1199
+ "null"
1200
+ ]
1201
+ },
1202
+ "percentile": {
1203
+ "type": [
1204
+ "array",
1205
+ "null"
1206
+ ]
1207
+ },
1208
+ "palette": {
1209
+ "type": "object"
1210
+ },
1211
+ "views": {
1212
+ "type": "array",
1213
+ "items": {
1214
+ "type": "string"
1215
+ }
1216
+ },
1217
+ "hemispheres": {
1218
+ "type": "array",
1219
+ "items": {
1220
+ "type": "string"
1221
+ }
1222
+ },
1223
+ "panes": {
1224
+ "type": "array",
1225
+ "items": {
1226
+ "type": "string"
1227
+ }
1228
+ },
1229
+ "missingColor": {},
1230
+ "rendering": {
1231
+ "type": "object",
1232
+ "properties": {
1233
+ "projection": {
1234
+ "type": "string"
1235
+ },
1236
+ "occlusion": {
1237
+ "type": "string"
1238
+ },
1239
+ "crossPartDepth": {
1240
+ "type": "string"
1241
+ },
1242
+ "missingLayer": {
1243
+ "type": "string"
1244
+ }
1245
+ }
1246
+ },
1247
+ "missingRule": {
1248
+ "type": "object",
1249
+ "properties": {
1250
+ "below": {
1251
+ "type": [
1252
+ "number",
1253
+ "null"
1254
+ ]
1255
+ },
1256
+ "values": {
1257
+ "type": "array",
1258
+ "items": {
1259
+ "type": [
1260
+ "number",
1261
+ "null"
1262
+ ]
1263
+ }
1264
+ },
1265
+ "zeroIsData": {
1266
+ "type": "boolean"
1267
+ }
1268
+ }
1269
+ },
1270
+ "nVertices": {
1271
+ "type": "integer"
1272
+ },
1273
+ "nMissing": {
1274
+ "type": "integer"
1275
+ },
1276
+ "parts": {
1277
+ "type": "array",
1278
+ "items": {
1279
+ "$ref": "#/definitions/surfacePart"
1280
+ }
1281
+ }
1282
+ },
1283
+ "required": [
1284
+ "kind",
1285
+ "parts"
1286
+ ],
1287
+ "description": "fp.surface payload: the complete value→colour contract of a surface (brain) map and every part."
1288
+ },
1289
+ "series": {
1290
+ "type": "object",
1291
+ "properties": {
1292
+ "id": {
1293
+ "type": "string"
1294
+ },
1295
+ "name": {
1296
+ "type": "string"
1297
+ },
1298
+ "kind": {
1299
+ "type": [
1300
+ "string",
1301
+ "null"
1302
+ ]
1303
+ },
1304
+ "roles": {
1305
+ "type": "array",
1306
+ "items": {
1307
+ "type": "string"
1308
+ }
1309
+ },
1310
+ "svg": {
1311
+ "type": "object",
1312
+ "additionalProperties": {
1313
+ "type": [
1314
+ "string",
1315
+ "array"
1316
+ ],
1317
+ "items": {
1318
+ "type": "string"
1319
+ }
1320
+ }
1321
+ },
1322
+ "data": {
1323
+ "type": "object",
1324
+ "properties": {
1325
+ "x": {
1326
+ "type": "array",
1327
+ "items": {
1328
+ "type": [
1329
+ "number",
1330
+ "null"
1331
+ ]
1332
+ }
1333
+ },
1334
+ "y": {
1335
+ "type": "array",
1336
+ "items": {
1337
+ "type": [
1338
+ "number",
1339
+ "null"
1340
+ ]
1341
+ }
1342
+ },
1343
+ "xLabels": {
1344
+ "type": "array",
1345
+ "items": {
1346
+ "type": [
1347
+ "string",
1348
+ "null"
1349
+ ]
1350
+ }
1351
+ },
1352
+ "yLabels": {
1353
+ "type": "array",
1354
+ "items": {
1355
+ "type": [
1356
+ "string",
1357
+ "null"
1358
+ ]
1359
+ }
1360
+ },
1361
+ "xIso": {
1362
+ "type": "array",
1363
+ "items": {
1364
+ "type": [
1365
+ "string",
1366
+ "null"
1367
+ ]
1368
+ }
1369
+ },
1370
+ "yIso": {
1371
+ "type": "array",
1372
+ "items": {
1373
+ "type": [
1374
+ "string",
1375
+ "null"
1376
+ ]
1377
+ }
1378
+ }
1379
+ },
1380
+ "description": "The series' numbers as plotted; xLabels / yLabels name the category behind each on a categorical axis, xIso / yIso the ISO-8601 instant on a date axis."
1381
+ },
1382
+ "label": {
1383
+ "type": "string"
1384
+ },
1385
+ "panelId": {
1386
+ "type": "string"
1387
+ },
1388
+ "rasterized": {
1389
+ "type": "boolean"
1390
+ },
1391
+ "capture": {
1392
+ "type": "object",
1393
+ "properties": {
1394
+ "identity": {
1395
+ "type": "string"
1396
+ },
1397
+ "data": {
1398
+ "type": "string"
1399
+ }
1400
+ }
1401
+ },
1402
+ "capabilities": {
1403
+ "type": "object",
1404
+ "properties": {
1405
+ "dataMorph": {
1406
+ "type": "boolean"
1407
+ },
1408
+ "valueMorph": {
1409
+ "type": "boolean",
1410
+ "description": "Members carry stable keys (data-key): two versions can be tweened member by member."
1411
+ }
1412
+ },
1413
+ "required": [
1414
+ "dataMorph"
1415
+ ]
1416
+ },
1417
+ "components": {
1418
+ "type": "array",
1419
+ "items": {
1420
+ "type": "object",
1421
+ "properties": {
1422
+ "role": {
1423
+ "type": "string"
1424
+ },
1425
+ "svgId": {
1426
+ "type": "string"
1427
+ },
1428
+ "members": {
1429
+ "type": "array",
1430
+ "items": {
1431
+ "type": "string"
1432
+ }
1433
+ },
1434
+ "memberRole": {
1435
+ "type": "string"
1436
+ },
1437
+ "groupId": {
1438
+ "type": "string",
1439
+ "description": "Manifest-only id of this series' member group when svgId is a collection shared with other series (seaborn hue splits)."
1440
+ }
1441
+ },
1442
+ "required": [
1443
+ "role",
1444
+ "svgId"
1445
+ ]
1446
+ }
1447
+ },
1448
+ "points": {
1449
+ "type": "array",
1450
+ "items": {
1451
+ "type": "object",
1452
+ "properties": {
1453
+ "index": {
1454
+ "type": "integer"
1455
+ },
1456
+ "svgId": {
1457
+ "type": "string"
1458
+ },
1459
+ "x": {
1460
+ "type": [
1461
+ "number",
1462
+ "null"
1463
+ ]
1464
+ },
1465
+ "y": {
1466
+ "type": [
1467
+ "number",
1468
+ "null"
1469
+ ]
1470
+ }
1471
+ },
1472
+ "required": [
1473
+ "index",
1474
+ "svgId"
1475
+ ]
1476
+ }
1477
+ },
1478
+ "color": {
1479
+ "type": "object",
1480
+ "description": "The series' colour: hex = its primary paint (or 'varies' for a colour-mapped collection), alpha, token = the exact palette token naming it, palette = its position in the active cycle, scale = the colorScales[] id colouring it.",
1481
+ "properties": {
1482
+ "scale": {
1483
+ "type": "string"
1484
+ },
1485
+ "hex": {
1486
+ "type": "string"
1487
+ },
1488
+ "alpha": {
1489
+ "type": "number"
1490
+ },
1491
+ "token": {
1492
+ "type": "string"
1493
+ },
1494
+ "palette": {
1495
+ "type": "object",
1496
+ "required": [
1497
+ "name",
1498
+ "index"
1499
+ ],
1500
+ "properties": {
1501
+ "name": {
1502
+ "type": "string"
1503
+ },
1504
+ "index": {
1505
+ "type": "integer"
1506
+ }
1507
+ }
1508
+ }
1509
+ }
1510
+ },
1511
+ "bar": {
1512
+ "type": "object",
1513
+ "properties": {
1514
+ "orientation": {
1515
+ "type": "string"
1516
+ },
1517
+ "baseline": {
1518
+ "type": "array",
1519
+ "items": {
1520
+ "type": [
1521
+ "number",
1522
+ "null"
1523
+ ]
1524
+ }
1525
+ },
1526
+ "length": {
1527
+ "type": "array",
1528
+ "items": {
1529
+ "type": [
1530
+ "number",
1531
+ "null"
1532
+ ]
1533
+ }
1534
+ },
1535
+ "center": {
1536
+ "type": "array",
1537
+ "items": {
1538
+ "type": [
1539
+ "number",
1540
+ "null"
1541
+ ]
1542
+ }
1543
+ },
1544
+ "width": {
1545
+ "type": "array",
1546
+ "items": {
1547
+ "type": [
1548
+ "number",
1549
+ "null"
1550
+ ]
1551
+ }
1552
+ },
1553
+ "keys": {
1554
+ "type": "array",
1555
+ "items": {
1556
+ "type": "string"
1557
+ },
1558
+ "description": "Stable per-bar keys (the category label under each bar); also data-key on the bar element."
1559
+ }
1560
+ }
1561
+ },
1562
+ "band": {
1563
+ "type": "object",
1564
+ "properties": {
1565
+ "paths": {
1566
+ "type": "array"
1567
+ },
1568
+ "x": {
1569
+ "type": "array",
1570
+ "items": {
1571
+ "type": [
1572
+ "number",
1573
+ "null"
1574
+ ]
1575
+ }
1576
+ },
1577
+ "lo": {
1578
+ "type": "array",
1579
+ "items": {
1580
+ "type": [
1581
+ "number",
1582
+ "null"
1583
+ ]
1584
+ }
1585
+ },
1586
+ "hi": {
1587
+ "type": "array",
1588
+ "items": {
1589
+ "type": [
1590
+ "number",
1591
+ "null"
1592
+ ]
1593
+ }
1594
+ },
1595
+ "what": {
1596
+ "type": "string"
1597
+ },
1598
+ "y1": {
1599
+ "type": "array",
1600
+ "items": {
1601
+ "type": [
1602
+ "number",
1603
+ "null"
1604
+ ]
1605
+ }
1606
+ },
1607
+ "y2": {
1608
+ "type": "array",
1609
+ "items": {
1610
+ "type": [
1611
+ "number",
1612
+ "null"
1613
+ ]
1614
+ }
1615
+ }
1616
+ },
1617
+ "description": "An area's inputs: fp.band records {x, lo, hi, what}, fp.area {x, y1, y2}; a promoted fill_between only its polygon paths."
1618
+ },
1619
+ "uncertainty": {
1620
+ "type": "object",
1621
+ "properties": {
1622
+ "xerr": {
1623
+ "type": [
1624
+ "array",
1625
+ "null"
1626
+ ]
1627
+ },
1628
+ "yerr": {
1629
+ "type": [
1630
+ "array",
1631
+ "null"
1632
+ ]
1633
+ },
1634
+ "errShape": {
1635
+ "type": [
1636
+ "string",
1637
+ "null"
1638
+ ],
1639
+ "enum": [
1640
+ "scalar",
1641
+ "symmetric",
1642
+ "asymmetric",
1643
+ null
1644
+ ]
1645
+ }
1646
+ },
1647
+ "description": "An errorbar's errors broadcast to the N points: xerr / yerr are N values, or [lower, upper] (each N) when errShape is asymmetric."
1648
+ },
1649
+ "distribution": {
1650
+ "$ref": "#/definitions/distribution"
1651
+ },
1652
+ "field": {
1653
+ "$ref": "#/definitions/field"
1654
+ },
1655
+ "glowbar": {
1656
+ "$ref": "#/definitions/signatureStats"
1657
+ },
1658
+ "fluxbox": {
1659
+ "$ref": "#/definitions/signatureStats"
1660
+ },
1661
+ "hexmatrix": {
1662
+ "$ref": "#/definitions/hexmatrix"
1663
+ },
1664
+ "surface": {
1665
+ "$ref": "#/definitions/surface"
1666
+ },
1667
+ "image": {
1668
+ "type": "object",
1669
+ "description": "An fp.image: its channels (each a colorScales[] entry, <series>.<channel>), LUTs, display ranges, pixel size and extent.",
1670
+ "properties": {
1671
+ "shape": {
1672
+ "type": "array",
1673
+ "items": {
1674
+ "type": "integer"
1675
+ }
1676
+ },
1677
+ "channels": {
1678
+ "type": "array",
1679
+ "items": {
1680
+ "type": "object",
1681
+ "properties": {
1682
+ "name": {
1683
+ "type": "string"
1684
+ },
1685
+ "lut": {
1686
+ "type": [
1687
+ "string",
1688
+ "object"
1689
+ ]
1690
+ },
1691
+ "displayRange": {
1692
+ "type": "array",
1693
+ "items": {
1694
+ "type": "number"
1695
+ }
1696
+ },
1697
+ "scale": {
1698
+ "type": "string"
1699
+ },
1700
+ "controlKey": {
1701
+ "type": "string"
1702
+ }
1703
+ },
1704
+ "required": [
1705
+ "name",
1706
+ "scale",
1707
+ "displayRange"
1708
+ ]
1709
+ }
1710
+ },
1711
+ "composite": {
1712
+ "type": "string",
1713
+ "enum": [
1714
+ "add",
1715
+ "max"
1716
+ ]
1717
+ },
1718
+ "origin": {
1719
+ "type": "string",
1720
+ "enum": [
1721
+ "upper",
1722
+ "lower"
1723
+ ]
1724
+ },
1725
+ "extent": {
1726
+ "type": "array",
1727
+ "items": {
1728
+ "type": "number"
1729
+ }
1730
+ },
1731
+ "units": {
1732
+ "type": "string"
1733
+ },
1734
+ "pixelSize": {
1735
+ "type": [
1736
+ "array",
1737
+ "null"
1738
+ ],
1739
+ "items": {
1740
+ "type": "number"
1741
+ }
1742
+ }
1743
+ },
1744
+ "required": [
1745
+ "shape",
1746
+ "channels"
1747
+ ]
1748
+ },
1749
+ "axis": {
1750
+ "type": "string",
1751
+ "enum": [
1752
+ "x2",
1753
+ "y2"
1754
+ ],
1755
+ "description": "Present when the series is drawn against a twin's value axis (axes[].y2 / .x2)."
1756
+ },
1757
+ "step": {
1758
+ "type": "object",
1759
+ "properties": {
1760
+ "where": {
1761
+ "type": "string",
1762
+ "enum": [
1763
+ "pre",
1764
+ "post",
1765
+ "mid"
1766
+ ]
1767
+ },
1768
+ "drawstyle": {
1769
+ "type": "string"
1770
+ }
1771
+ },
1772
+ "required": [
1773
+ "where"
1774
+ ]
1775
+ },
1776
+ "stem": {
1777
+ "type": "object",
1778
+ "properties": {
1779
+ "baseline": {
1780
+ "type": "number"
1781
+ },
1782
+ "orientation": {
1783
+ "type": "string"
1784
+ }
1785
+ }
1786
+ },
1787
+ "regression": {
1788
+ "type": "object",
1789
+ "description": "fp.regression: the fit as drawn.",
1790
+ "required": [
1791
+ "kind",
1792
+ "n",
1793
+ "ci"
1794
+ ],
1795
+ "properties": {
1796
+ "kind": {
1797
+ "type": "string",
1798
+ "enum": [
1799
+ "linear",
1800
+ "poly",
1801
+ "lowess"
1802
+ ]
1803
+ },
1804
+ "degree": {
1805
+ "type": [
1806
+ "integer",
1807
+ "null"
1808
+ ]
1809
+ },
1810
+ "coefficients": {
1811
+ "type": [
1812
+ "array",
1813
+ "null"
1814
+ ],
1815
+ "items": {
1816
+ "type": "number"
1817
+ }
1818
+ },
1819
+ "r2": {
1820
+ "type": "number"
1821
+ },
1822
+ "p": {
1823
+ "type": [
1824
+ "number",
1825
+ "null"
1826
+ ]
1827
+ },
1828
+ "n": {
1829
+ "type": "integer"
1830
+ },
1831
+ "ci": {
1832
+ "type": "number"
1833
+ },
1834
+ "dof": {
1835
+ "type": "integer"
1836
+ },
1837
+ "frac": {
1838
+ "type": "number"
1839
+ },
1840
+ "bootstrap": {
1841
+ "type": "integer"
1842
+ },
1843
+ "grid": {
1844
+ "type": "array",
1845
+ "items": {
1846
+ "type": [
1847
+ "number",
1848
+ "null"
1849
+ ]
1850
+ }
1851
+ },
1852
+ "fit": {
1853
+ "type": "array",
1854
+ "items": {
1855
+ "type": [
1856
+ "number",
1857
+ "null"
1858
+ ]
1859
+ }
1860
+ }
1861
+ }
1862
+ },
1863
+ "kde": {
1864
+ "type": "object",
1865
+ "description": "fp.kde: the density as drawn.",
1866
+ "required": [
1867
+ "grid",
1868
+ "density",
1869
+ "bandwidth",
1870
+ "n"
1871
+ ],
1872
+ "properties": {
1873
+ "grid": {
1874
+ "type": "array",
1875
+ "items": {
1876
+ "type": [
1877
+ "number",
1878
+ "null"
1879
+ ]
1880
+ }
1881
+ },
1882
+ "density": {
1883
+ "type": "array",
1884
+ "items": {
1885
+ "type": [
1886
+ "number",
1887
+ "null"
1888
+ ]
1889
+ }
1890
+ },
1891
+ "bandwidth": {
1892
+ "type": "number"
1893
+ },
1894
+ "method": {
1895
+ "type": [
1896
+ "string",
1897
+ "number"
1898
+ ]
1899
+ },
1900
+ "n": {
1901
+ "type": "integer"
1902
+ }
1903
+ }
1904
+ }
1905
+ },
1906
+ "required": [
1907
+ "id",
1908
+ "svg"
1909
+ ]
1910
+ },
1911
+ "legendEntry": {
1912
+ "type": "object",
1913
+ "properties": {
1914
+ "series": {
1915
+ "type": "string"
1916
+ },
1917
+ "part": {
1918
+ "type": "string"
1919
+ },
1920
+ "text": {
1921
+ "type": "string"
1922
+ },
1923
+ "swatch": {
1924
+ "type": "string"
1925
+ },
1926
+ "label": {
1927
+ "type": "string"
1928
+ }
1929
+ }
1930
+ },
1931
+ "guidePart": {
1932
+ "type": "object",
1933
+ "properties": {
1934
+ "svgId": {
1935
+ "type": "string"
1936
+ },
1937
+ "role": {
1938
+ "type": "string"
1939
+ },
1940
+ "kind": {
1941
+ "type": "string"
1942
+ }
1943
+ },
1944
+ "required": [
1945
+ "svgId",
1946
+ "role"
1947
+ ]
1948
+ },
1949
+ "guide": {
1950
+ "type": "object",
1951
+ "properties": {
1952
+ "id": {
1953
+ "type": "string"
1954
+ },
1955
+ "svgId": {
1956
+ "type": "string"
1957
+ },
1958
+ "role": {
1959
+ "type": "string"
1960
+ },
1961
+ "axis": {
1962
+ "type": "string"
1963
+ },
1964
+ "entries": {
1965
+ "type": "array",
1966
+ "items": {
1967
+ "$ref": "#/definitions/legendEntry"
1968
+ }
1969
+ },
1970
+ "orientation": {
1971
+ "enum": [
1972
+ "vertical",
1973
+ "horizontal"
1974
+ ]
1975
+ },
1976
+ "label": {
1977
+ "type": "string"
1978
+ },
1979
+ "ticks": {
1980
+ "type": "array",
1981
+ "items": {
1982
+ "type": [
1983
+ "number",
1984
+ "null"
1985
+ ]
1986
+ }
1987
+ },
1988
+ "normalization": {
1989
+ "$ref": "#/definitions/normalization"
1990
+ },
1991
+ "cmap": {
1992
+ "type": "string"
1993
+ },
1994
+ "parts": {
1995
+ "type": "array",
1996
+ "items": {
1997
+ "$ref": "#/definitions/guidePart"
1998
+ }
1999
+ },
2000
+ "mappable": {
2001
+ "type": "string"
2002
+ },
2003
+ "anchors": {
2004
+ "type": "array",
2005
+ "items": {
2006
+ "type": "object",
2007
+ "properties": {
2008
+ "value": {
2009
+ "type": "number"
2010
+ },
2011
+ "svg": {
2012
+ "type": "number"
2013
+ }
2014
+ },
2015
+ "required": [
2016
+ "value",
2017
+ "svg"
2018
+ ]
2019
+ }
2020
+ },
2021
+ "axisLength": {
2022
+ "type": [
2023
+ "number",
2024
+ "null"
2025
+ ]
2026
+ },
2027
+ "tickLocator": {
2028
+ "enum": [
2029
+ "auto",
2030
+ "log",
2031
+ "fixed"
2032
+ ]
2033
+ },
2034
+ "tickFormatter": {
2035
+ "enum": [
2036
+ "plain",
2037
+ "sci",
2038
+ "log",
2039
+ "percent",
2040
+ "custom"
2041
+ ]
2042
+ },
2043
+ "extend": {
2044
+ "enum": [
2045
+ "neither",
2046
+ "min",
2047
+ "max",
2048
+ "both"
2049
+ ]
2050
+ },
2051
+ "extendParts": {
2052
+ "type": "object",
2053
+ "properties": {
2054
+ "min": {
2055
+ "type": "string"
2056
+ },
2057
+ "max": {
2058
+ "type": "string"
2059
+ }
2060
+ }
2061
+ },
2062
+ "colorScale": {
2063
+ "type": "string"
2064
+ }
2065
+ },
2066
+ "required": [
2067
+ "id",
2068
+ "role"
2069
+ ]
2070
+ },
2071
+ "overlay": {
2072
+ "type": "object",
2073
+ "properties": {
2074
+ "id": {
2075
+ "type": "string"
2076
+ },
2077
+ "svgId": {
2078
+ "type": "string"
2079
+ },
2080
+ "role": {
2081
+ "type": "string"
2082
+ },
2083
+ "kind": {
2084
+ "type": "string"
2085
+ },
2086
+ "name": {
2087
+ "type": "string"
2088
+ },
2089
+ "label": {
2090
+ "type": "string"
2091
+ },
2092
+ "between": {
2093
+ "type": "array",
2094
+ "items": {
2095
+ "type": "string"
2096
+ }
2097
+ },
2098
+ "p": {
2099
+ "type": "number"
2100
+ },
2101
+ "text": {
2102
+ "type": "string"
2103
+ },
2104
+ "rasterized": {
2105
+ "type": "boolean"
2106
+ },
2107
+ "stats": {
2108
+ "type": "object",
2109
+ "description": "The test behind a significance bracket (fp.brackets): the fp.stats row it was drawn from.",
2110
+ "properties": {
2111
+ "test": {
2112
+ "type": "string"
2113
+ },
2114
+ "statistic": {
2115
+ "type": "number"
2116
+ },
2117
+ "p": {
2118
+ "type": "number"
2119
+ },
2120
+ "pCorrected": {
2121
+ "type": "number"
2122
+ },
2123
+ "correction": {
2124
+ "type": "string"
2125
+ },
2126
+ "effectSizeMethod": {
2127
+ "type": "string"
2128
+ },
2129
+ "effectSize": {
2130
+ "type": "number"
2131
+ },
2132
+ "ciLow": {
2133
+ "type": "number"
2134
+ },
2135
+ "ciHigh": {
2136
+ "type": "number"
2137
+ },
2138
+ "n": {
2139
+ "type": [
2140
+ "array",
2141
+ "integer"
2142
+ ],
2143
+ "items": {
2144
+ "type": [
2145
+ "integer",
2146
+ "null"
2147
+ ]
2148
+ }
2149
+ },
2150
+ "dof": {
2151
+ "type": "number"
2152
+ },
2153
+ "alternative": {
2154
+ "type": "string"
2155
+ }
2156
+ }
2157
+ },
2158
+ "length": {
2159
+ "type": "number",
2160
+ "description": "A scale bar's length in data units."
2161
+ },
2162
+ "units": {
2163
+ "type": "string"
2164
+ }
2165
+ },
2166
+ "required": [
2167
+ "id",
2168
+ "svgId",
2169
+ "role"
2170
+ ]
2171
+ },
2172
+ "partNode": {
2173
+ "type": "object",
2174
+ "properties": {
2175
+ "id": {
2176
+ "type": "string"
2177
+ },
2178
+ "ref": {
2179
+ "type": "string"
2180
+ },
2181
+ "role": {
2182
+ "type": "string"
2183
+ },
2184
+ "kind": {
2185
+ "type": "string"
2186
+ },
2187
+ "axis": {
2188
+ "type": "string"
2189
+ },
2190
+ "groupRole": {
2191
+ "type": "string"
2192
+ },
2193
+ "memberRole": {
2194
+ "type": "string"
2195
+ },
2196
+ "label": {
2197
+ "type": "string"
2198
+ },
2199
+ "members": {
2200
+ "type": "array",
2201
+ "items": {
2202
+ "type": "string"
2203
+ }
2204
+ },
2205
+ "children": {
2206
+ "type": "array",
2207
+ "items": {
2208
+ "$ref": "#/definitions/partNode"
2209
+ }
2210
+ }
2211
+ },
2212
+ "description": "A parts-tree node: a leaf (ref + role), a group (id, members, groupRole / memberRole) or a container (id, children)."
2213
+ },
2214
+ "colorScale": {
2215
+ "type": "object",
2216
+ "properties": {
2217
+ "id": {
2218
+ "type": "string"
2219
+ },
2220
+ "kind": {
2221
+ "enum": [
2222
+ "continuous",
2223
+ "binned",
2224
+ "categorical"
2225
+ ]
2226
+ },
2227
+ "colormap": {
2228
+ "type": "object",
2229
+ "properties": {
2230
+ "name": {
2231
+ "type": "string"
2232
+ },
2233
+ "source": {
2234
+ "type": "string"
2235
+ },
2236
+ "N": {
2237
+ "type": "integer",
2238
+ "minimum": 1
2239
+ },
2240
+ "lut": {
2241
+ "type": "array",
2242
+ "items": {
2243
+ "type": "string",
2244
+ "pattern": "^#[0-9a-f]{8}$"
2245
+ },
2246
+ "minItems": 1
2247
+ },
2248
+ "under": {
2249
+ "type": "string",
2250
+ "pattern": "^#[0-9a-f]{8}$"
2251
+ },
2252
+ "over": {
2253
+ "type": "string",
2254
+ "pattern": "^#[0-9a-f]{8}$"
2255
+ },
2256
+ "bad": {
2257
+ "type": "string",
2258
+ "pattern": "^#[0-9a-f]{8}$"
2259
+ },
2260
+ "discrete": {
2261
+ "type": "boolean"
2262
+ },
2263
+ "approximate": {
2264
+ "type": "boolean"
2265
+ }
2266
+ },
2267
+ "required": [
2268
+ "name",
2269
+ "source",
2270
+ "N",
2271
+ "lut",
2272
+ "under",
2273
+ "over",
2274
+ "bad",
2275
+ "discrete"
2276
+ ]
2277
+ },
2278
+ "norm": {
2279
+ "type": "object",
2280
+ "properties": {
2281
+ "kind": {
2282
+ "enum": [
2283
+ "linear",
2284
+ "log",
2285
+ "symlog",
2286
+ "power",
2287
+ "twoslope",
2288
+ "centered",
2289
+ "boundary",
2290
+ "none",
2291
+ "custom"
2292
+ ]
2293
+ },
2294
+ "vmin": {
2295
+ "type": [
2296
+ "number",
2297
+ "null"
2298
+ ]
2299
+ },
2300
+ "vmax": {
2301
+ "type": [
2302
+ "number",
2303
+ "null"
2304
+ ]
2305
+ },
2306
+ "clip": {
2307
+ "type": "boolean"
2308
+ },
2309
+ "extend": {
2310
+ "enum": [
2311
+ "neither",
2312
+ "min",
2313
+ "max",
2314
+ "both"
2315
+ ]
2316
+ },
2317
+ "vcenter": {
2318
+ "type": "number"
2319
+ },
2320
+ "halfrange": {
2321
+ "type": [
2322
+ "number",
2323
+ "null"
2324
+ ]
2325
+ },
2326
+ "gamma": {
2327
+ "type": "number"
2328
+ },
2329
+ "linthresh": {
2330
+ "type": "number"
2331
+ },
2332
+ "linscale": {
2333
+ "type": "number"
2334
+ },
2335
+ "base": {
2336
+ "type": "number"
2337
+ },
2338
+ "boundaries": {
2339
+ "type": "array",
2340
+ "items": {
2341
+ "type": [
2342
+ "number",
2343
+ "null"
2344
+ ]
2345
+ }
2346
+ },
2347
+ "ncolors": {
2348
+ "type": "integer"
2349
+ },
2350
+ "className": {
2351
+ "type": "string"
2352
+ }
2353
+ },
2354
+ "required": [
2355
+ "kind",
2356
+ "vmin",
2357
+ "vmax",
2358
+ "clip",
2359
+ "extend"
2360
+ ]
2361
+ },
2362
+ "mappables": {
2363
+ "type": "array",
2364
+ "items": {
2365
+ "type": "string"
2366
+ }
2367
+ },
2368
+ "colorbars": {
2369
+ "type": "array",
2370
+ "items": {
2371
+ "type": "string"
2372
+ }
2373
+ },
2374
+ "label": {
2375
+ "type": [
2376
+ "string",
2377
+ "null"
2378
+ ]
2379
+ },
2380
+ "recolor": {
2381
+ "enum": [
2382
+ "live",
2383
+ "raster",
2384
+ "regenerate"
2385
+ ]
2386
+ },
2387
+ "valueRaster": {
2388
+ "type": "string"
2389
+ },
2390
+ "editable": {
2391
+ "type": "object",
2392
+ "properties": {
2393
+ "cmap": {
2394
+ "type": "boolean"
2395
+ },
2396
+ "limits": {
2397
+ "type": "boolean"
2398
+ },
2399
+ "normKinds": {
2400
+ "type": "array",
2401
+ "items": {
2402
+ "type": "string"
2403
+ }
2404
+ },
2405
+ "center": {
2406
+ "type": "boolean"
2407
+ }
2408
+ },
2409
+ "required": [
2410
+ "cmap",
2411
+ "limits",
2412
+ "normKinds",
2413
+ "center"
2414
+ ]
2415
+ },
2416
+ "alpha": {
2417
+ "type": "object",
2418
+ "description": "A second, opacity channel (alpha_by): each element's fill-opacity runs over range with its data-alpha-value under norm.",
2419
+ "required": [
2420
+ "source",
2421
+ "range",
2422
+ "norm"
2423
+ ],
2424
+ "properties": {
2425
+ "source": {
2426
+ "type": "string"
2427
+ },
2428
+ "range": {
2429
+ "type": "array",
2430
+ "items": {
2431
+ "type": "number"
2432
+ },
2433
+ "minItems": 2,
2434
+ "maxItems": 2
2435
+ },
2436
+ "norm": {
2437
+ "type": "object",
2438
+ "required": [
2439
+ "kind"
2440
+ ],
2441
+ "properties": {
2442
+ "kind": {
2443
+ "type": "string",
2444
+ "enum": [
2445
+ "linear",
2446
+ "log"
2447
+ ]
2448
+ },
2449
+ "vmin": {
2450
+ "type": [
2451
+ "number",
2452
+ "null"
2453
+ ]
2454
+ },
2455
+ "vmax": {
2456
+ "type": [
2457
+ "number",
2458
+ "null"
2459
+ ]
2460
+ }
2461
+ }
2462
+ }
2463
+ }
2464
+ }
2465
+ },
2466
+ "required": [
2467
+ "id",
2468
+ "kind",
2469
+ "colormap",
2470
+ "norm",
2471
+ "mappables",
2472
+ "colorbars",
2473
+ "recolor",
2474
+ "editable"
2475
+ ],
2476
+ "description": "A portable colour scale (colorscale.py): the exact lookup table and norm of every colour-mapped mark, the svg groups it colours and the colour keys drawing it. The id equals the recipe's colour-control key."
2477
+ }
2478
+ }
2479
+ }