40 lines
4.7 KiB
Markdown
40 lines
4.7 KiB
Markdown
# flowrs-viz: where the code and the numbers came from
|
||
|
||
flowrs-viz is Apache-2.0, like the rest of flowRS. It is new code; where it translates an
|
||
algorithm from a permissively licensed library, the file says so and the licence is in
|
||
`LICENSES/`. No GPL or AGPL code was read, ported or linked.
|
||
|
||
| flowRS file | Came from | What was taken | Licence |
|
||
|---|---|---|---|
|
||
| `src/scale.rs` — `ticks`, `tick_increment`, `tick_step` | d3-array 3 (Mike Bostock) | The tick-step rule (1, 2, 5 × 10^k with the √50, √10, √2 thresholds) and its integer arithmetic | ISC (`LICENSES/d3-array-ISC.txt`) |
|
||
| `src/scale.rs` — `nice_linear`, `nice_log`, `log_ticks`, band and point scales, `lerp` | d3-scale 4 (Mike Bostock) | `linear.nice`, `log.nice`/`log.ticks` for base 10, the band/point step and offset arithmetic, d3-interpolate's `a(1-t)+bt` | ISC (`LICENSES/d3-scale-ISC.txt`) |
|
||
| `src/scale.rs` — `precision_fixed`, `tick_label` | d3-format 3 (Mike Bostock) | `precisionFixed` and the `,f` format with a true minus sign, as Vega labels linear axes | ISC (`LICENSES/d3-format-ISC.txt`) |
|
||
| `src/scale.rs` — `Bins` | vega-statistics `bin` and vega-transforms `Bin` (UW Interactive Data Lab) | The bin-step search (base 10, divide by 5 and 2, `nice`) and the bin assignment with its 1e-14 epsilon | BSD-3-Clause (`LICENSES/Vega-BSD-3-Clause.txt`) |
|
||
| `src/spec.rs`, `src/compile.rs` | Vega-Lite 6.5.0 (UW Interactive Data Lab) | The grammar's semantics, written from Vega-Lite's documentation and its compiled output: defaults (300 px continuous size, 20 px step, band paddings 0.1/0.05 for bars, 0/0 for rects, 0.25/0.125 for ticks), `zero` and `nice` rules, `bin_maxbins_N_field` naming, binned-bar spacing, zero-offset stacking ordered by the stacking fields descending, the invalid-value filter, and aggregate ops (Vega's incremental mean and deviation) | BSD-3-Clause (`LICENSES/Vega-Lite-BSD-3-Clause.txt`) |
|
||
| `src/color.rs` | Björn Ottosson's OKLab (public domain / MIT); Machado, Oliveira and Fernandes (2009) CVD matrices (published) | The OKLab matrices; the severity-1.0 simulation matrices; the dataviz method's ΔE = OKLab distance × 100 | — |
|
||
| `src/colormap.rs` — `validate_categorical` | The dataviz method's `validate_palette.js` (the validator dpb-plot's palette was checked with) | Its five checks and thresholds | — |
|
||
| `src/lint.rs` | Draco 2 (CMU Data Interaction Group, MIT) | The ideas of its deterministic hard constraints (aggregating a category, bars off zero, log scales over zero, bars with two continuous axes, colour cardinality), written as plain Rust; no ASP code was ported. flowRS's own rules are new | — |
|
||
| `src/faithful.rs`, `src/corpus.rs`, `src/gpu.rs`, `src/svg.rs`, `src/figure.rs` | New | The faithfulness check's second implementation, the corpus and its expectations, the scene builder, the SVG and PNG writers | — |
|
||
| `corpus/charts.json` | Written here (`oracle` not involved): neuro and T&M figures over synthetic data | — | Apache-2.0 |
|
||
| `src/luts.rs` (generated by `oracle/colormaps.py`) | See below | 256 entries per map | per map |
|
||
|
||
## The colormaps
|
||
|
||
| Maps | Source | Licence |
|
||
|---|---|---|
|
||
| viridis, magma, inferno, plasma | BIDS/colormap (Nathaniel J. Smith, Stéfan van der Walt), as shipped in matplotlib 3.11.2 | CC0 1.0 (BIDS/colormap's licence) |
|
||
| RdBu_r, Reds, Blues | ColorBrewer 2.0 (Cynthia A. Brewer, Mark Harrower, Pennsylvania State University), interpolated to 256 entries by matplotlib 3.11.2 | Apache-2.0 (`LICENSES/ColorBrewer-Apache-2.0.txt`) |
|
||
| batlow, oslo, lajolla, devon, vik, berlin, broc | cmcrameri 1.10 (Callum Rollo): Fabio Crameri's Scientific colour maps 8.0.1, doi:10.5281/zenodo.1243862 | MIT (`LICENSES/cmcrameri-MIT.txt`) |
|
||
| fire, kbc, gouldian, coolwarm | colorcet 3.2.1 (HoloViz), after Peter Kovesi's perceptually uniform maps | CC-BY-4.0 (`LICENSES/colorcet-CC-BY-4.0.txt`); `colormap::attributions()` carries the credit wherever they are offered |
|
||
|
||
No rainbow map is offered (`colormap::RAINBOWS` names the ones a spec is refused for).
|
||
|
||
## Test data
|
||
|
||
| File | Source | Licence |
|
||
|---|---|---|
|
||
| `fixtures/data/penguins.json` | vega-datasets 3.2.1 (`data/penguins.json`): Palmer Station Antarctica LTER, Allison Horst's palmerpenguins | CC0 1.0 |
|
||
| `fixtures/data/anscombe.json` | vega-datasets 3.2.1: F. J. Anscombe (1973), Graphs in Statistical Analysis, The American Statistician 27(1):17-21 | Published data |
|
||
| `fixtures/specs/bar.vl.json` | Vega-Lite's `examples/specs/bar.vl.json` | BSD-3-Clause |
|
||
| the other `fixtures/specs/*.vl.json` | Written here; the neuro and T&M ones carry synthetic inline values | Apache-2.0 |
|
||
| `fixtures/oracle/*.json` | Written by `oracle/vegalite.mjs` from Vega-Lite 6.5.0 and Vega 6.4.0 run on the specs above | — |
|