@thi.ng/fuzzy-viz v2.1.144
This project is part of the @thi.ng/umbrella monorepo.
About
Visualization, instrumentation & introspection utils for @thi.ng/fuzzy.
Status
STABLE - used in production
Search or submit any issues for this package
Installation
yarn add @thi.ng/fuzzy-viz
ES module import:
<script type="module" src="https://cdn.skypack.dev/@thi.ng/fuzzy-viz"></script>
For Node.js REPL:
# with flag only for < v16
node --experimental-repl-await
> const fuzzyViz = await import("@thi.ng/fuzzy-viz");
Package sizes (gzipped, pre-treeshake): ESM: 1.06 KB
Dependencies
- @thi.ng/api
- @thi.ng/fuzzy
- @thi.ng/hiccup
- @thi.ng/hiccup-svg
- @thi.ng/math
- @thi.ng/strings
- @thi.ng/text-canvas
API
Linguistic variable visualization
Generate an SVG visualization of all fuzzy sets defined in a linguistic variable:
import { varToSvg } from "@thi.ng/fuzzy-viz";
// temperature sets (in celsius)
const temp = variable(
[-20, 40],
{
freezing: invSigmoid(0, 2),
cold: trapezoid(-1, 2, 16, 20),
warm: trapezoid(15, 20, 30, 34),
hot: sigmoid(32, 2)
}
);
// generate & write SVG file
writeFileSync("temperature.svg", varToSvg(temp, { samples: 200 }));
See
VisualizeVarOpts
for further options to configure the visualization.
Instrument a DefuzzStrategy
instrumentStrategy()
is an higher order function. It takes an existing
DefuzzStrategy
and an instrumentation function. Returns new DefuzzStrategy
which first executes original strategy
, then calls instrument
with the same
args AND the computed result obtained from strategy
. Returns result of
original strategy
.
The instrumentation function is intended to perform side effects (e.g. debug
outputs) and/or produce secondary results (e.g. visualizations). The latter can
be obtained through the IDeref
mechanism implemented by the returned function.
Since defuzz()
might call the strategy multiple times (i.e. if there are
multiple output vars used), .deref()
will always return an array of secondary
results.
Note: The secondary results from the instrumentation function will persist &
accumulate. If re-using the instrumented strategy for multiple defuzz()
invocations, it's highly recommended to clear any previous results using
.clear()
.
const strategy = instrumentStrategy(
cogStrategy({ samples: 1000 }),
fuzzySetToAscii({ width: 40, height: 8 })
);
// apply strategy as normal (well, usually done via defuzz())
strategy(gaussian(5, 2), [0, 10]);
// 4.995
strategy.deref().forEach((viz) => console.log(viz));
// .................▄▆█|█▆▄.................
// ...............▅████|████▅...............
// .............▄██████|██████▄.............
// ...........▂▇███████|███████▇▂...........
// ..........▅█████████|█████████▅..........
// .......▁▅███████████|███████████▅▁.......
// .....▃▆█████████████|█████████████▆▃.....
// ▃▄▅▇████████████████|████████████████▇▅▄▃
// ^ 5.00
// cleanup (optional)
strategy.clear();
Using fuzzySetToHiccup()
/fuzzySetToSvg()
visualizations like below can be
created following the same pattern as above:
Authors
Karsten Schmidt
If this project contributes to an academic publication, please cite it as:
@misc{thing-fuzzy-viz,
title = "@thi.ng/fuzzy-viz",
author = "Karsten Schmidt",
note = "https://thi.ng/fuzzy-viz",
year = 2020
}
License
© 2020 - 2021 Karsten Schmidt // Apache Software License 2.0
7 days ago
9 days ago
12 days ago
21 days ago
24 days ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
6 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
11 months ago
11 months ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago