Skip to content

Commit 2d13780

Browse files
committed
implement custom scales
1 parent b2433b4 commit 2d13780

8 files changed

+1041
-9
lines changed

demos/custom-scales.html

+1,017
Large diffs are not rendered by default.

demos/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ <h1>μPlot Demos</h1>
6969
<a href="time-periods.html">Compare several overlaid time periods &amp; stacked legend</a>
7070
<a href="log-scales.html">Logarithmic scales (log10, real data)</a>
7171
<a href="log-scales2.html">Logarithmic scales (log2, log10, axis formatters)</a>
72+
<a href="custom-scales.html">Custom scales (Weibull, etc.)</a>
7273
<a href="arcsinh-scales.html">Inverse hyperbolic sine scales</a>
7374
<a href="data-smoothing.html">Data smoothing (moving avg)</a>
7475
<a href="nice-scale.html">"Nice" scale</a>

dist/uPlot.cjs.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -2863,6 +2863,7 @@ function uPlot(opts, data, then) {
28632863
let _val = (
28642864
scale.distr == 3 ? log10(val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) :
28652865
scale.distr == 4 ? asinh(val, scale.asinh) :
2866+
scale.distr == 100 ? scale.fwd(val) :
28662867
val
28672868
);
28682869

@@ -4081,8 +4082,8 @@ function uPlot(opts, data, then) {
40814082

40824083
let distr = sc.distr;
40834084

4084-
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : sc.min;
4085-
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : sc.max;
4085+
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : distr == 100 ? sc.fwd(sc.min) : sc.min;
4086+
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : distr == 100 ? sc.fwd(sc.max) : sc.max;
40864087

40874088
changed[k] = anyChanged = true;
40884089
}
@@ -5108,6 +5109,7 @@ function uPlot(opts, data, then) {
51085109
return (
51095110
distr == 3 ? pow(10, sv) :
51105111
distr == 4 ? sinh(sv, sc.asinh) :
5112+
distr == 100 ? sc.bwd(sv) :
51115113
sv
51125114
);
51135115
}

dist/uPlot.d.ts

+6
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ declare namespace uPlot {
614614
Ordinal = 2,
615615
Logarithmic = 3,
616616
ArcSinh = 4,
617+
Custom = 100,
617618
}
618619

619620
export type LogBase = 10 | 2;
@@ -646,6 +647,11 @@ declare namespace uPlot {
646647
/** arcsinh linear threshold */
647648
asinh?: number; // 1
648649

650+
/** forward transform fn, with custom distr: 100 */
651+
fwd?: (v: number) => number;
652+
/** backward transform fn, with custom distr: 100 */
653+
bwd?: (v: number) => number;
654+
649655
/** current min scale value */
650656
min?: number;
651657

dist/uPlot.esm.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -2861,6 +2861,7 @@ function uPlot(opts, data, then) {
28612861
let _val = (
28622862
scale.distr == 3 ? log10(val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) :
28632863
scale.distr == 4 ? asinh(val, scale.asinh) :
2864+
scale.distr == 100 ? scale.fwd(val) :
28642865
val
28652866
);
28662867

@@ -4079,8 +4080,8 @@ function uPlot(opts, data, then) {
40794080

40804081
let distr = sc.distr;
40814082

4082-
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : sc.min;
4083-
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : sc.max;
4083+
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : distr == 100 ? sc.fwd(sc.min) : sc.min;
4084+
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : distr == 100 ? sc.fwd(sc.max) : sc.max;
40844085

40854086
changed[k] = anyChanged = true;
40864087
}
@@ -5106,6 +5107,7 @@ function uPlot(opts, data, then) {
51065107
return (
51075108
distr == 3 ? pow(10, sv) :
51085109
distr == 4 ? sinh(sv, sc.asinh) :
5110+
distr == 100 ? sc.bwd(sv) :
51095111
sv
51105112
);
51115113
}

dist/uPlot.iife.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -2864,6 +2864,7 @@ var uPlot = (function () {
28642864
let _val = (
28652865
scale.distr == 3 ? log10(val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) :
28662866
scale.distr == 4 ? asinh(val, scale.asinh) :
2867+
scale.distr == 100 ? scale.fwd(val) :
28672868
val
28682869
);
28692870

@@ -4082,8 +4083,8 @@ var uPlot = (function () {
40824083

40834084
let distr = sc.distr;
40844085

4085-
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : sc.min;
4086-
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : sc.max;
4086+
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : distr == 100 ? sc.fwd(sc.min) : sc.min;
4087+
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : distr == 100 ? sc.fwd(sc.max) : sc.max;
40874088

40884089
changed[k] = anyChanged = true;
40894090
}
@@ -5109,6 +5110,7 @@ var uPlot = (function () {
51095110
return (
51105111
distr == 3 ? pow(10, sv) :
51115112
distr == 4 ? sinh(sv, sc.asinh) :
5113+
distr == 100 ? sc.bwd(sv) :
51125114
sv
51135115
);
51145116
}

dist/uPlot.iife.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/uPlot.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ export default function uPlot(opts, data, then) {
300300
let _val = (
301301
scale.distr == 3 ? log10(val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) :
302302
scale.distr == 4 ? asinh(val, scale.asinh) :
303+
scale.distr == 100 ? scale.fwd(val) :
303304
val
304305
);
305306

@@ -1522,8 +1523,8 @@ export default function uPlot(opts, data, then) {
15221523

15231524
let distr = sc.distr;
15241525

1525-
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : sc.min;
1526-
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : sc.max;
1526+
sc._min = distr == 3 ? log10(sc.min) : distr == 4 ? asinh(sc.min, sc.asinh) : distr == 100 ? sc.fwd(sc.min) : sc.min;
1527+
sc._max = distr == 3 ? log10(sc.max) : distr == 4 ? asinh(sc.max, sc.asinh) : distr == 100 ? sc.fwd(sc.max) : sc.max;
15271528

15281529
changed[k] = anyChanged = true;
15291530
}
@@ -2549,6 +2550,7 @@ export default function uPlot(opts, data, then) {
25492550
return (
25502551
distr == 3 ? pow(10, sv) :
25512552
distr == 4 ? sinh(sv, sc.asinh) :
2553+
distr == 100 ? sc.bwd(sv) :
25522554
sv
25532555
);
25542556
}

0 commit comments

Comments
 (0)