svelteplot 0.4.5-pr-208.4 → 0.4.5
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/dist/Mark.svelte +73 -87
- package/dist/Mark.svelte.d.ts +34 -37
- package/dist/helpers/colors.d.ts +1 -1
- package/dist/helpers/index.d.ts +2 -2
- package/dist/helpers/scales.d.ts +2 -2
- package/dist/helpers/scales.js +10 -21
- package/dist/helpers/typeChecks.d.ts +4 -4
- package/dist/marks/Area.svelte.d.ts +34 -37
- package/dist/marks/AreaX.svelte.d.ts +35 -38
- package/dist/marks/AreaY.svelte.d.ts +35 -38
- package/dist/marks/Arrow.svelte.d.ts +34 -37
- package/dist/marks/AxisX.svelte +2 -2
- package/dist/marks/AxisX.svelte.d.ts +36 -39
- package/dist/marks/AxisY.svelte.d.ts +35 -38
- package/dist/marks/BarX.svelte.d.ts +35 -38
- package/dist/marks/BarY.svelte.d.ts +34 -37
- package/dist/marks/BollingerX.svelte.d.ts +74 -2
- package/dist/marks/BollingerY.svelte.d.ts +74 -2
- package/dist/marks/Cell.svelte.d.ts +34 -37
- package/dist/marks/CustomMark.svelte.d.ts +81 -2
- package/dist/marks/DifferenceY.svelte.d.ts +67 -7
- package/dist/marks/Dot.svelte +1 -1
- package/dist/marks/Dot.svelte.d.ts +34 -37
- package/dist/marks/DotX.svelte.d.ts +34 -37
- package/dist/marks/DotY.svelte.d.ts +34 -37
- package/dist/marks/Geo.svelte.d.ts +34 -37
- package/dist/marks/GridX.svelte.d.ts +34 -37
- package/dist/marks/GridY.svelte.d.ts +34 -37
- package/dist/marks/Line.svelte.d.ts +36 -39
- package/dist/marks/LineX.svelte.d.ts +35 -38
- package/dist/marks/LineY.svelte.d.ts +35 -38
- package/dist/marks/Link.svelte.d.ts +34 -37
- package/dist/marks/Rect.svelte.d.ts +34 -37
- package/dist/marks/RuleX.svelte.d.ts +34 -37
- package/dist/marks/RuleY.svelte.d.ts +34 -37
- package/dist/marks/Spike.svelte.d.ts +34 -36
- package/dist/marks/Text.svelte.d.ts +34 -37
- package/dist/marks/TickX.svelte.d.ts +34 -37
- package/dist/marks/TickY.svelte.d.ts +34 -37
- package/dist/marks/Vector.svelte.d.ts +34 -37
- package/dist/marks/helpers/BaseAxisX.svelte +0 -10
- package/dist/marks/helpers/BaseAxisX.svelte.d.ts +0 -1
- package/dist/marks/helpers/RectPath.svelte.d.ts +63 -3
- package/dist/marks/helpers/Regression.svelte +1 -1
- package/dist/transforms/bollinger.d.ts +67 -1
- package/dist/transforms/group.d.ts +12 -4
- package/dist/transforms/interval.d.ts +124 -2
- package/dist/transforms/recordize.d.ts +4 -1
- package/dist/transforms/select.d.ts +434 -7
- package/dist/transforms/sort.d.ts +246 -3
- package/dist/transforms/stack.d.ts +23 -3
- package/dist/transforms/window.d.ts +130 -2
- package/dist/types/mark.d.ts +34 -37
- package/dist/types/scale.d.ts +0 -6
- package/package.json +128 -129
- package/dist/regression/exponential.d.ts +0 -17
- package/dist/regression/exponential.js +0 -56
- package/dist/regression/index.d.ts +0 -10
- package/dist/regression/index.js +0 -10
- package/dist/regression/linear.d.ts +0 -17
- package/dist/regression/linear.js +0 -59
- package/dist/regression/loess.d.ts +0 -14
- package/dist/regression/loess.js +0 -122
- package/dist/regression/logarithmic.d.ts +0 -20
- package/dist/regression/logarithmic.js +0 -60
- package/dist/regression/polynomial.d.ts +0 -21
- package/dist/regression/polynomial.js +0 -160
- package/dist/regression/power.d.ts +0 -18
- package/dist/regression/power.js +0 -56
- package/dist/regression/quadratic.d.ts +0 -19
- package/dist/regression/quadratic.js +0 -70
- package/dist/regression/types.d.ts +0 -4
- package/dist/regression/types.js +0 -1
- package/dist/regression/utils/determination.d.ts +0 -6
- package/dist/regression/utils/determination.js +0 -16
- package/dist/regression/utils/geometry.d.ts +0 -9
- package/dist/regression/utils/geometry.js +0 -12
- package/dist/regression/utils/interpose.d.ts +0 -6
- package/dist/regression/utils/interpose.js +0 -37
- package/dist/regression/utils/median.d.ts +0 -4
- package/dist/regression/utils/median.js +0 -8
- package/dist/regression/utils/ols.d.ts +0 -6
- package/dist/regression/utils/ols.js +0 -9
- package/dist/regression/utils/points.d.ts +0 -11
- package/dist/regression/utils/points.js +0 -45
- package/dist/transforms/dodge.d.ts +0 -17
- package/dist/transforms/dodge.js +0 -128
package/dist/transforms/dodge.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import IntervalTree from 'interval-tree-1d';
|
|
2
|
-
import { groupFacetsAndZ } from '../helpers/group';
|
|
3
|
-
export function dodgeX(args, plotState) {
|
|
4
|
-
if (!args.dodgeX)
|
|
5
|
-
return args.data;
|
|
6
|
-
let { anchor = 'left', padding = 1, r = args.dodgeX.r } = maybeAnchor(args.dodgeX);
|
|
7
|
-
let anchorFunction;
|
|
8
|
-
switch (`${anchor}`.toLowerCase()) {
|
|
9
|
-
case 'left':
|
|
10
|
-
anchorFunction = anchorXLeft;
|
|
11
|
-
break;
|
|
12
|
-
case 'right':
|
|
13
|
-
anchorFunction = anchorXRight;
|
|
14
|
-
break;
|
|
15
|
-
case 'middle':
|
|
16
|
-
anchorFunction = anchorXMiddle;
|
|
17
|
-
break;
|
|
18
|
-
default:
|
|
19
|
-
throw new Error(`unknown dodge anchor: ${anchor}`);
|
|
20
|
-
}
|
|
21
|
-
return dodge('x', 'y', anchorFunction, Number(padding), r, args, plotState);
|
|
22
|
-
}
|
|
23
|
-
export function dodgeY(args, plotState) {
|
|
24
|
-
if (!args.dodgeY)
|
|
25
|
-
return args.data;
|
|
26
|
-
let { anchor = 'bottom', padding = 1, r = args.dodgeY.r } = maybeAnchor(args.dodgeY);
|
|
27
|
-
let anchorFunction;
|
|
28
|
-
switch (`${anchor}`.toLowerCase()) {
|
|
29
|
-
case 'top':
|
|
30
|
-
anchorFunction = anchorYTop;
|
|
31
|
-
break;
|
|
32
|
-
case 'bottom':
|
|
33
|
-
anchorFunction = anchorYBottom;
|
|
34
|
-
break;
|
|
35
|
-
case 'middle':
|
|
36
|
-
anchorFunction = anchorYMiddle;
|
|
37
|
-
break;
|
|
38
|
-
default:
|
|
39
|
-
throw new Error(`unknown dodge anchor: ${anchor}`);
|
|
40
|
-
}
|
|
41
|
-
return dodge('y', 'x', anchorFunction, Number(padding), r, args, plotState);
|
|
42
|
-
}
|
|
43
|
-
function dodge(y, x, anchor, padding, r, { data, ...channels }, plotState) {
|
|
44
|
-
if (r != null && typeof r !== 'number') {
|
|
45
|
-
// use the r channel
|
|
46
|
-
// let { channels, sort, reverse } = options;
|
|
47
|
-
// channels = maybeNamed(channels);
|
|
48
|
-
// if (channels?.r === undefined)
|
|
49
|
-
// options = { ...options, channels: { ...channels, r: { value: r, scale: 'r' } } };
|
|
50
|
-
// if (sort === undefined && reverse === undefined) options.sort = { channel: '-r' };
|
|
51
|
-
}
|
|
52
|
-
const { fx, fy } = channels;
|
|
53
|
-
let [ky, ty] = anchor(plotState);
|
|
54
|
-
const compare = ky ? compareAscending : compareSymmetric;
|
|
55
|
-
const cr = r !== undefined ? r : 3; // default radius if no r channel
|
|
56
|
-
// group data by facets
|
|
57
|
-
groupFacetsAndZ(data, { fx, fy }, (items) => {
|
|
58
|
-
// apply dodge within each facet
|
|
59
|
-
const tree = IntervalTree();
|
|
60
|
-
const data = items.filter((d) => (typeof d.r !== 'number' || d.r >= 0) && isFinite(d[x]) && isFinite(d[y]));
|
|
61
|
-
const intervals = new Float64Array(2 * data.length + 2);
|
|
62
|
-
data.forEach((d, i) => {
|
|
63
|
-
const ri = d.r ?? r ?? 3;
|
|
64
|
-
const y0 = ky ? ri + padding : 0; // offset baseline for varying radius
|
|
65
|
-
const l = d[x] - ri;
|
|
66
|
-
const h = d[x] + ri;
|
|
67
|
-
// The first two positions are 0 to test placing the dot on the baseline.
|
|
68
|
-
let k = 2;
|
|
69
|
-
// For any previously placed circles that may overlap this circle, compute
|
|
70
|
-
// the y-positions that place this circle tangent to these other circles.
|
|
71
|
-
// https://observablehq.com/@mbostock/circle-offset-along-line
|
|
72
|
-
tree.queryInterval(l - padding, h + padding, ([, , j]) => {
|
|
73
|
-
const yj = data[j][y] - y0;
|
|
74
|
-
const dx = d[x] - data[j][x];
|
|
75
|
-
const dr = padding + (channels.r ? d.r + data[j].r : 2 * cr);
|
|
76
|
-
const dy = Math.sqrt(dr * dr - dx * dx);
|
|
77
|
-
intervals[k++] = yj - dy;
|
|
78
|
-
intervals[k++] = yj + dy;
|
|
79
|
-
});
|
|
80
|
-
// Find the best y-value where this circle can fit.
|
|
81
|
-
let candidates = intervals.slice(0, k);
|
|
82
|
-
if (ky)
|
|
83
|
-
candidates = candidates.filter((y) => y >= 0);
|
|
84
|
-
out: for (const diff of candidates.sort(compare)) {
|
|
85
|
-
for (let j = 0; j < k; j += 2) {
|
|
86
|
-
if (intervals[j] + 1e-6 < diff && diff < intervals[j + 1] - 1e-6) {
|
|
87
|
-
continue out;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
d[y] = diff + y0;
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
// Insert the placed circle into the interval tree.
|
|
94
|
-
tree.insert([l, h, i]);
|
|
95
|
-
});
|
|
96
|
-
if (!ky)
|
|
97
|
-
ky = 1;
|
|
98
|
-
data.forEach((d) => (d[y] = d[y] * ky + ty));
|
|
99
|
-
});
|
|
100
|
-
return data;
|
|
101
|
-
}
|
|
102
|
-
function maybeAnchor(anchor) {
|
|
103
|
-
return typeof anchor === 'string' ? { anchor } : anchor;
|
|
104
|
-
}
|
|
105
|
-
function anchorXLeft({ options: { marginLeft } }) {
|
|
106
|
-
return [1, marginLeft];
|
|
107
|
-
}
|
|
108
|
-
function anchorXRight({ facetWidth: width, options: { marginLeft } }) {
|
|
109
|
-
return [-1, marginLeft + width];
|
|
110
|
-
}
|
|
111
|
-
function anchorXMiddle({ facetWidth: width, options: { marginLeft } }) {
|
|
112
|
-
return [0, marginLeft + width / 2];
|
|
113
|
-
}
|
|
114
|
-
function anchorYTop({ options: { marginTop } }) {
|
|
115
|
-
return [1, marginTop];
|
|
116
|
-
}
|
|
117
|
-
function anchorYBottom({ facetHeight: height }) {
|
|
118
|
-
return [-1, height];
|
|
119
|
-
}
|
|
120
|
-
function anchorYMiddle({ facetHeight: height, options: { marginTop, marginBottom } }) {
|
|
121
|
-
return [0, (marginTop + height) / 2];
|
|
122
|
-
}
|
|
123
|
-
function compareSymmetric(a, b) {
|
|
124
|
-
return Math.abs(a) - Math.abs(b);
|
|
125
|
-
}
|
|
126
|
-
function compareAscending(a, b) {
|
|
127
|
-
return a - b;
|
|
128
|
-
}
|