manim-web 0.25.0 → 0.26.0
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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/integrations/react.js +17 -17
- package/dist/integrations/vue.js +16 -16
- package/dist/manim-web.browser.js +2996 -1495
- package/dist/mobjects/graphing/AreaChart.d.ts +101 -0
- package/dist/mobjects/graphing/AreaChart.d.ts.map +1 -0
- package/dist/mobjects/graphing/CalendarHeatmap.d.ts +111 -0
- package/dist/mobjects/graphing/CalendarHeatmap.d.ts.map +1 -0
- package/dist/mobjects/graphing/ChordDiagram.d.ts +122 -0
- package/dist/mobjects/graphing/ChordDiagram.d.ts.map +1 -0
- package/dist/mobjects/graphing/RadarChart.d.ts +135 -0
- package/dist/mobjects/graphing/RadarChart.d.ts.map +1 -0
- package/dist/mobjects/graphing/StackedBarChart.d.ts +131 -0
- package/dist/mobjects/graphing/StackedBarChart.d.ts.map +1 -0
- package/dist/mobjects/graphing/StepChart.d.ts +90 -0
- package/dist/mobjects/graphing/StepChart.d.ts.map +1 -0
- package/dist/mobjects/graphing/Treemap.d.ts +100 -0
- package/dist/mobjects/graphing/Treemap.d.ts.map +1 -0
- package/dist/mobjects/graphing/WaterfallChart.d.ts +164 -0
- package/dist/mobjects/graphing/WaterfallChart.d.ts.map +1 -0
- package/dist/mobjects/graphing/chartColors.d.ts +18 -0
- package/dist/mobjects/graphing/chartColors.d.ts.map +1 -0
- package/dist/mobjects/graphing/chordLayout.d.ts +89 -0
- package/dist/mobjects/graphing/chordLayout.d.ts.map +1 -0
- package/dist/mobjects/graphing/index.d.ts +11 -0
- package/dist/mobjects/graphing/index.d.ts.map +1 -1
- package/dist/mobjects/graphing/treemapLayout.d.ts +83 -0
- package/dist/mobjects/graphing/treemapLayout.d.ts.map +1 -0
- package/dist/{src-Dq6hmMfV.js → src-B2lipHn1.js} +2978 -1477
- package/package.json +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Group } from '../../core/Group';
|
|
2
|
+
import { VGroup } from '../../core/VGroup';
|
|
3
|
+
import { Polygon } from '../geometry/Polygon';
|
|
4
|
+
import { Axes } from './Axes';
|
|
5
|
+
/**
|
|
6
|
+
* Where the step between two points falls.
|
|
7
|
+
* - 'after': hold the current value, then jump at the next x (matplotlib 'post').
|
|
8
|
+
* - 'before': jump at the current x, then hold to the next x (matplotlib 'pre').
|
|
9
|
+
* - 'center': jump halfway between the two x-values (matplotlib 'mid').
|
|
10
|
+
*/
|
|
11
|
+
export type StepMode = 'before' | 'after' | 'center';
|
|
12
|
+
/** Options for creating a StepChart. */
|
|
13
|
+
export interface StepChartOptions {
|
|
14
|
+
/** Y-values as [series][point]. A flat array is treated as a single series. */
|
|
15
|
+
values: number[][] | number[];
|
|
16
|
+
/** Shared x-values, one per point. Default: indices 0, 1, 2, ... */
|
|
17
|
+
xValues?: number[];
|
|
18
|
+
/** Where the step falls between points. Default: 'after' */
|
|
19
|
+
stepMode?: StepMode;
|
|
20
|
+
/** Series colors. Single color or array. Default: Manim palette */
|
|
21
|
+
seriesColors?: string | string[];
|
|
22
|
+
/** Stroke width for the step lines. Default: 3 */
|
|
23
|
+
lineWidth?: number;
|
|
24
|
+
/** Draw a dot at each data point. Default: false */
|
|
25
|
+
showDots?: boolean;
|
|
26
|
+
/** Dot radius when showDots is set. Default: 0.06 */
|
|
27
|
+
dotRadius?: number;
|
|
28
|
+
/** An existing Axes to plot onto. When omitted, one is built from the data. */
|
|
29
|
+
axes?: Axes;
|
|
30
|
+
/** X-axis range override as [min, max] or [min, max, step]. */
|
|
31
|
+
xRange?: [number, number] | [number, number, number];
|
|
32
|
+
/** Y-axis range override as [min, max] or [min, max, step]. */
|
|
33
|
+
yRange?: [number, number] | [number, number, number];
|
|
34
|
+
/** Visual length of the x-axis when auto-building axes. Default: 8 */
|
|
35
|
+
xLength?: number;
|
|
36
|
+
/** Visual length of the y-axis when auto-building axes. Default: 6 */
|
|
37
|
+
yLength?: number;
|
|
38
|
+
/** Color for the axes when auto-building. Default: white */
|
|
39
|
+
axisColor?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* StepChart - a line graph drawn as horizontal/vertical steps.
|
|
43
|
+
*
|
|
44
|
+
* Each series holds its value across an interval, then jumps to the next
|
|
45
|
+
* value. The jump falls before, after, or at the center of each interval,
|
|
46
|
+
* which suits discrete or state-over-time data.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const chart = new StepChart({
|
|
51
|
+
* values: [0, 2, 2, 5, 3],
|
|
52
|
+
* stepMode: 'after',
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare class StepChart extends Group {
|
|
57
|
+
/** The coordinate system the steps are plotted on. */
|
|
58
|
+
axes: Axes;
|
|
59
|
+
/** The step lines, one per series. */
|
|
60
|
+
lines: VGroup;
|
|
61
|
+
/** The data-point dots, when enabled. */
|
|
62
|
+
dots: VGroup;
|
|
63
|
+
protected _values: number[][];
|
|
64
|
+
protected _x: number[];
|
|
65
|
+
protected _stepMode: StepMode;
|
|
66
|
+
protected _colors: string[];
|
|
67
|
+
protected _lineWidth: number;
|
|
68
|
+
protected _showDots: boolean;
|
|
69
|
+
protected _dotRadius: number;
|
|
70
|
+
/** Step vertices in data space, one array per series. */
|
|
71
|
+
protected _stepPoints: Array<Array<[number, number]>>;
|
|
72
|
+
constructor(options: StepChartOptions);
|
|
73
|
+
private _normalize;
|
|
74
|
+
/** Build the step vertices (data space) for one series. */
|
|
75
|
+
private _buildStepPoints;
|
|
76
|
+
private _buildAxes;
|
|
77
|
+
private _createLines;
|
|
78
|
+
/** The coordinate system. */
|
|
79
|
+
getAxes(): Axes;
|
|
80
|
+
/** The number of series. */
|
|
81
|
+
getNumSeries(): number;
|
|
82
|
+
/** The step line of series `s`. */
|
|
83
|
+
getLine(s: number): Polygon | undefined;
|
|
84
|
+
/** The step vertices in data space for series `s`. */
|
|
85
|
+
getStepPoints(s: number): Array<[number, number]>;
|
|
86
|
+
/** The step mode. */
|
|
87
|
+
getStepMode(): StepMode;
|
|
88
|
+
copy(): StepChart;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=StepChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepChart.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/StepChart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9B,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,sDAAsD;IACtD,IAAI,EAAE,IAAI,CAAC;IACX,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,yDAAyD;IACzD,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBAE1C,OAAO,EAAE,gBAAgB;IA8CrC,OAAO,CAAC,UAAU;IAKlB,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,YAAY;IAmCpB,6BAA6B;IAC7B,OAAO,IAAI,IAAI;IAIf,4BAA4B;IAC5B,YAAY,IAAI,MAAM;IAItB,mCAAmC;IACnC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIvC,sDAAsD;IACtD,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIjD,qBAAqB;IACrB,WAAW,IAAI,QAAQ;IAId,IAAI,IAAI,SAAS;CAa3B"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { VGroup } from '../../core/VGroup';
|
|
2
|
+
import { Rectangle } from '../geometry/Rectangle';
|
|
3
|
+
import { TreemapNode, TreemapTile } from './treemapLayout';
|
|
4
|
+
/** How a tile picks its color. */
|
|
5
|
+
export type TreemapColorBy = 'category' | 'depth';
|
|
6
|
+
/**
|
|
7
|
+
* Options for {@link Treemap}.
|
|
8
|
+
*/
|
|
9
|
+
export interface TreemapOptions {
|
|
10
|
+
/** The root of the value hierarchy. */
|
|
11
|
+
data: TreemapNode;
|
|
12
|
+
/** Width of the chart region. Default: 8. */
|
|
13
|
+
width?: number;
|
|
14
|
+
/** Height of the chart region. Default: 4.5. */
|
|
15
|
+
height?: number;
|
|
16
|
+
/** Inset between a parent tile and its children. Default: 0.06. */
|
|
17
|
+
padding?: number;
|
|
18
|
+
/** Tile colors. Single color applies to all, array cycles. Default: Manim palette. */
|
|
19
|
+
colors?: string | string[];
|
|
20
|
+
/** Whether a color is chosen by top-level category or by depth. Default: 'category'. */
|
|
21
|
+
colorBy?: TreemapColorBy;
|
|
22
|
+
/** Fill opacity of the tiles. Default: 0.85. */
|
|
23
|
+
fillOpacity?: number;
|
|
24
|
+
/** Stroke color between tiles. Default: WHITE. */
|
|
25
|
+
strokeColor?: string;
|
|
26
|
+
/** Stroke width between tiles. Default: 1. */
|
|
27
|
+
strokeWidth?: number;
|
|
28
|
+
/** Whether to draw the root rectangle. Default: false. */
|
|
29
|
+
showRoot?: boolean;
|
|
30
|
+
/** Whether to draw a rectangle for internal (non-leaf) nodes. Default: true. */
|
|
31
|
+
showInternalNodes?: boolean;
|
|
32
|
+
/** Whether to label leaf tiles that are large enough. Default: true. */
|
|
33
|
+
showLabels?: boolean;
|
|
34
|
+
/** Font size for tile labels. Default: 18. */
|
|
35
|
+
labelFontSize?: number;
|
|
36
|
+
/** Smallest tile side, in scene units, that still gets a label. Default: 0.6. */
|
|
37
|
+
minLabelSize?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Treemap - a squarified treemap of nested rectangles.
|
|
41
|
+
*
|
|
42
|
+
* Each node of a value hierarchy becomes a {@link Rectangle} sized in
|
|
43
|
+
* proportion to its value. Children tile their parent's rectangle, so a child
|
|
44
|
+
* always sits inside its parent. Tiles are colored by top-level category or by
|
|
45
|
+
* depth. Empty, single-node, and zero-value inputs produce no error.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const tree = new Treemap({
|
|
50
|
+
* data: {
|
|
51
|
+
* name: 'root',
|
|
52
|
+
* children: [
|
|
53
|
+
* { name: 'A', value: 6 },
|
|
54
|
+
* { name: 'B', children: [{ name: 'B1', value: 2 }, { name: 'B2', value: 2 }] },
|
|
55
|
+
* ],
|
|
56
|
+
* },
|
|
57
|
+
* });
|
|
58
|
+
* tree.getTile([1, 0]); // the B1 rectangle
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare class Treemap extends VGroup {
|
|
62
|
+
/** The tile rectangles, root first. */
|
|
63
|
+
tiles: VGroup;
|
|
64
|
+
/** The tile labels. */
|
|
65
|
+
labelGroup: VGroup;
|
|
66
|
+
protected _layout: TreemapTile[];
|
|
67
|
+
protected _options: TreemapOptions;
|
|
68
|
+
protected _colors: string[];
|
|
69
|
+
protected _colorBy: TreemapColorBy;
|
|
70
|
+
protected _fillOpacity: number;
|
|
71
|
+
protected _strokeColor: string;
|
|
72
|
+
protected _strokeWidth: number;
|
|
73
|
+
protected _showRoot: boolean;
|
|
74
|
+
protected _showInternalNodes: boolean;
|
|
75
|
+
protected _showLabels: boolean;
|
|
76
|
+
protected _labelFontSize: number;
|
|
77
|
+
protected _minLabelSize: number;
|
|
78
|
+
protected _tileByPath: Map<string, Rectangle>;
|
|
79
|
+
constructor(options: TreemapOptions);
|
|
80
|
+
/** Whether a tile has a non-leaf (it has a deeper descendant). */
|
|
81
|
+
protected _isLeaf(tile: TreemapTile): boolean;
|
|
82
|
+
/** The color for a tile, by category (top ancestor) or by depth. */
|
|
83
|
+
protected _colorForTile(tile: TreemapTile): string;
|
|
84
|
+
/** Build one rectangle per visible tile. */
|
|
85
|
+
protected _buildTiles(): void;
|
|
86
|
+
/** Build labels for leaf tiles that are large enough to hold text. */
|
|
87
|
+
protected _buildLabels(): void;
|
|
88
|
+
/** All tile rectangles, root first when drawn. */
|
|
89
|
+
getTiles(): Rectangle[];
|
|
90
|
+
/**
|
|
91
|
+
* The rectangle for a node, addressed by its index path from the root.
|
|
92
|
+
* @param path - Child indices from the root (empty path = root).
|
|
93
|
+
* @returns The rectangle, or undefined when the node is not drawn.
|
|
94
|
+
*/
|
|
95
|
+
getTile(path: number[]): Rectangle | undefined;
|
|
96
|
+
/** The computed layout (rectangles, values, depths) for every node. */
|
|
97
|
+
getLayout(): TreemapTile[];
|
|
98
|
+
copy(): Treemap;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=Treemap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Treemap.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/Treemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAalD,OAAO,EAAwB,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK3F,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,wFAAwF;IACxF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,OAAQ,SAAQ,MAAM;IACjC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;IACnC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,WAAW,yBAAgC;gBAEzC,OAAO,EAAE,cAAc;IA+CnC,kEAAkE;IAClE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAQ7C,oEAAoE;IACpE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAKlD,4CAA4C;IAC5C,SAAS,CAAC,WAAW,IAAI,IAAI;IAyB7B,sEAAsE;IACtE,SAAS,CAAC,YAAY,IAAI,IAAI;IAkB9B,kDAAkD;IAClD,QAAQ,IAAI,SAAS,EAAE;IAIvB;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS;IAI9C,uEAAuE;IACvE,SAAS,IAAI,WAAW,EAAE;IAIjB,IAAI,IAAI,OAAO;CAKzB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { VGroup } from '../../core/VGroup';
|
|
2
|
+
import { VMobject } from '../../core/VMobject';
|
|
3
|
+
import { Rectangle } from '../geometry/Rectangle';
|
|
4
|
+
import { NumberLine } from './NumberLine';
|
|
5
|
+
/** One rendered bar, resolved from the deltas. */
|
|
6
|
+
interface BarSpec {
|
|
7
|
+
/** Running total at the bottom start of the bar. */
|
|
8
|
+
startValue: number;
|
|
9
|
+
/** Running total at the top end of the bar. */
|
|
10
|
+
endValue: number;
|
|
11
|
+
/** Running total carried to the next bar (for the connector level). */
|
|
12
|
+
connectLevel: number;
|
|
13
|
+
/** Fill/stroke color for the bar. */
|
|
14
|
+
color: string;
|
|
15
|
+
/** Label text for the bar, if any. */
|
|
16
|
+
label?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Options for creating a WaterfallChart.
|
|
20
|
+
*/
|
|
21
|
+
export interface WaterfallChartOptions {
|
|
22
|
+
/** Sequential contributions (deltas), left to right. */
|
|
23
|
+
values: number[];
|
|
24
|
+
/** Labels for each bar. Default: [] */
|
|
25
|
+
labels?: string[];
|
|
26
|
+
/** Color for positive contributions. Default: GREEN. */
|
|
27
|
+
increaseColor?: string;
|
|
28
|
+
/** Color for negative contributions. Default: RED. */
|
|
29
|
+
decreaseColor?: string;
|
|
30
|
+
/** Color for the total bar. Default: BLUE. */
|
|
31
|
+
totalColor?: string;
|
|
32
|
+
/** Whether to draw connector lines between bars. Default: true */
|
|
33
|
+
showConnectors?: boolean;
|
|
34
|
+
/** Whether to append a total bar spanning 0 to the sum. Default: false */
|
|
35
|
+
showTotal?: boolean;
|
|
36
|
+
/** Label for the appended total bar. Default: 'Total' */
|
|
37
|
+
totalLabel?: string;
|
|
38
|
+
/** Width of each bar. Default: 0.6 */
|
|
39
|
+
barWidth?: number;
|
|
40
|
+
/** Gap between adjacent bars. Default: 0.4 */
|
|
41
|
+
barGap?: number;
|
|
42
|
+
/** Stroke width of the connector lines. Default: 1.5 */
|
|
43
|
+
connectorWidth?: number;
|
|
44
|
+
/** Stroke width of the bar outline. Default: 1.5 */
|
|
45
|
+
barStrokeWidth?: number;
|
|
46
|
+
/** Fill opacity of the bars. Default: 0.9 */
|
|
47
|
+
fillOpacity?: number;
|
|
48
|
+
/** Y-axis range as [min, max, step]. Default: auto-scaled from the running totals. */
|
|
49
|
+
yRange?: [number, number, number];
|
|
50
|
+
/** Visual height of the chart area. Default: 5 */
|
|
51
|
+
height?: number;
|
|
52
|
+
/** Visual width of the chart area. Default: 8 */
|
|
53
|
+
width?: number;
|
|
54
|
+
/** Color for the axes and labels. Default: WHITE */
|
|
55
|
+
axisColor?: string;
|
|
56
|
+
/** Whether to include y-axis tick marks. Default: true */
|
|
57
|
+
includeYTicks?: boolean;
|
|
58
|
+
/** Whether to include y-axis number labels. Default: true */
|
|
59
|
+
includeYLabels?: boolean;
|
|
60
|
+
/** Whether to draw the per-bar labels. Default: true */
|
|
61
|
+
showLabels?: boolean;
|
|
62
|
+
/** Font size for the bar labels. Default: 18 */
|
|
63
|
+
labelFontSize?: number;
|
|
64
|
+
/** Font size for the y-axis labels. Default: 20 */
|
|
65
|
+
yLabelFontSize?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* WaterfallChart - A waterfall (bridge) chart mobject.
|
|
69
|
+
*
|
|
70
|
+
* Shows sequential positive and negative contributions as floating bars. Bar i
|
|
71
|
+
* starts at the running total of the previous bars and spans its own delta.
|
|
72
|
+
* Positive and negative deltas use separate colors. Connector lines join each
|
|
73
|
+
* bar to the next at the running-total level. An optional total bar spans from
|
|
74
|
+
* zero to the final sum.
|
|
75
|
+
*
|
|
76
|
+
* The chart is a VGroup, so Create and FadeIn animate it directly.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const chart = new WaterfallChart({
|
|
81
|
+
* values: [100, -40, 30, -20, 50],
|
|
82
|
+
* labels: ['Start', 'Q1', 'Q2', 'Q3', 'Q4'],
|
|
83
|
+
* showTotal: true,
|
|
84
|
+
* });
|
|
85
|
+
* scene.play(new Create(chart));
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare class WaterfallChart extends VGroup {
|
|
89
|
+
/** The floating bars (deltas, plus the total bar when enabled). */
|
|
90
|
+
bars: VGroup;
|
|
91
|
+
/** The connector lines between bars. */
|
|
92
|
+
connectors: VGroup;
|
|
93
|
+
/** The y-axis. */
|
|
94
|
+
yAxis: NumberLine;
|
|
95
|
+
/** The baseline at value zero. */
|
|
96
|
+
baseline: VMobject;
|
|
97
|
+
/** Per-bar labels. */
|
|
98
|
+
barLabels: VGroup;
|
|
99
|
+
/** Y-axis labels. */
|
|
100
|
+
yLabels: VGroup;
|
|
101
|
+
protected _values: number[];
|
|
102
|
+
protected _labelTexts: string[];
|
|
103
|
+
protected _increaseColor: string;
|
|
104
|
+
protected _decreaseColor: string;
|
|
105
|
+
protected _totalColor: string;
|
|
106
|
+
protected _showConnectors: boolean;
|
|
107
|
+
protected _showTotal: boolean;
|
|
108
|
+
protected _totalLabel: string;
|
|
109
|
+
protected _barWidth: number;
|
|
110
|
+
protected _barGap: number;
|
|
111
|
+
protected _connectorWidth: number;
|
|
112
|
+
protected _barStrokeWidth: number;
|
|
113
|
+
protected _fillOpacity: number;
|
|
114
|
+
protected _yRange: [number, number, number];
|
|
115
|
+
protected _height: number;
|
|
116
|
+
protected _width: number;
|
|
117
|
+
protected _axisColor: string;
|
|
118
|
+
protected _includeYTicks: boolean;
|
|
119
|
+
protected _includeYLabels: boolean;
|
|
120
|
+
protected _showLabels: boolean;
|
|
121
|
+
protected _labelFontSize: number;
|
|
122
|
+
protected _yLabelFontSize: number;
|
|
123
|
+
protected _specs: BarSpec[];
|
|
124
|
+
constructor(options: WaterfallChartOptions);
|
|
125
|
+
/** Resolve the deltas into ordered bar specs. */
|
|
126
|
+
private _buildSpecs;
|
|
127
|
+
/** Auto-scale the y range from every running-total level the bars reach. */
|
|
128
|
+
private _calculateYRange;
|
|
129
|
+
/** Convert a value to its y-coordinate within the chart area. */
|
|
130
|
+
valueToY(value: number): number;
|
|
131
|
+
/** X-coordinate of the center of bar i. */
|
|
132
|
+
private _barCenterX;
|
|
133
|
+
/** Create the y-axis. */
|
|
134
|
+
private _createYAxis;
|
|
135
|
+
/** Create the baseline at value zero. */
|
|
136
|
+
private _createBaseline;
|
|
137
|
+
/** Build one rectangle per bar spec. */
|
|
138
|
+
private _createBars;
|
|
139
|
+
/** Build the connector lines between adjacent bars. */
|
|
140
|
+
private _createConnectors;
|
|
141
|
+
/** Build the y-axis labels. */
|
|
142
|
+
private _createYLabels;
|
|
143
|
+
/** Build the per-bar labels below the baseline. */
|
|
144
|
+
private _createBarLabels;
|
|
145
|
+
/** Get the group of bars. */
|
|
146
|
+
getBars(): VGroup;
|
|
147
|
+
/** Get bar i, or undefined when out of range. */
|
|
148
|
+
getBar(index: number): Rectangle | undefined;
|
|
149
|
+
/** Get the group of connector lines. */
|
|
150
|
+
getConnectors(): VGroup;
|
|
151
|
+
/** Get the y-axis range as [min, max, step]. */
|
|
152
|
+
getYRange(): [number, number, number];
|
|
153
|
+
/** Get the deltas. */
|
|
154
|
+
getValues(): number[];
|
|
155
|
+
/** Get the final running total (sum of all deltas). */
|
|
156
|
+
getTotal(): number;
|
|
157
|
+
/** Get the visual height of the chart area. */
|
|
158
|
+
getChartHeight(): number;
|
|
159
|
+
/** Get the visual width of the chart area. */
|
|
160
|
+
getChartWidth(): number;
|
|
161
|
+
copy(): WaterfallChart;
|
|
162
|
+
}
|
|
163
|
+
export {};
|
|
164
|
+
//# sourceMappingURL=WaterfallChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaterfallChart.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/WaterfallChart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default color cycle shared by the multi-series charts (stacked/grouped bars,
|
|
3
|
+
* area charts, step charts). Matches the Manim palette used by BarChart.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_SERIES_COLORS: readonly string[];
|
|
6
|
+
/**
|
|
7
|
+
* Pick a color for series `index`, cycling through `colors`.
|
|
8
|
+
*
|
|
9
|
+
* Falls back to the default palette when `colors` is empty. A negative index
|
|
10
|
+
* wraps the same way a positive index does.
|
|
11
|
+
*/
|
|
12
|
+
export declare function cycleColor(colors: readonly string[], index: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Normalize a color option (single color or array) into a color array.
|
|
15
|
+
* An empty or missing option yields the default series palette.
|
|
16
|
+
*/
|
|
17
|
+
export declare function toColorList(colors: string | readonly string[] | undefined): string[];
|
|
18
|
+
//# sourceMappingURL=chartColors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartColors.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/chartColors.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EASlD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAIpF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chord diagram layout.
|
|
3
|
+
*
|
|
4
|
+
* The layout turns a square flow matrix into arcs around a circle (one arc per
|
|
5
|
+
* group, sized by the group's total flow) and ribbons between the arcs (one
|
|
6
|
+
* ribbon per non-zero pair of groups, sized by the flow). The functions here
|
|
7
|
+
* are pure. The {@link ChordDiagram} mobject renders the result.
|
|
8
|
+
*/
|
|
9
|
+
/** A directed flow from one group to another, used as link-list input. */
|
|
10
|
+
export interface ChordFlow {
|
|
11
|
+
/** Source group index. */
|
|
12
|
+
source: number;
|
|
13
|
+
/** Target group index. */
|
|
14
|
+
target: number;
|
|
15
|
+
/** Flow magnitude. */
|
|
16
|
+
value: number;
|
|
17
|
+
}
|
|
18
|
+
/** The arc placement for one group. */
|
|
19
|
+
export interface ChordGroupArc {
|
|
20
|
+
/** Group index. */
|
|
21
|
+
index: number;
|
|
22
|
+
/** Start angle of the arc, in radians. */
|
|
23
|
+
startAngle: number;
|
|
24
|
+
/** End angle of the arc, in radians. */
|
|
25
|
+
endAngle: number;
|
|
26
|
+
/** Total flow of the group (sum of its matrix row). */
|
|
27
|
+
value: number;
|
|
28
|
+
}
|
|
29
|
+
/** The placement of one ribbon between two groups. */
|
|
30
|
+
export interface ChordRibbonSpan {
|
|
31
|
+
/** Source group index. */
|
|
32
|
+
source: number;
|
|
33
|
+
/** Target group index. */
|
|
34
|
+
target: number;
|
|
35
|
+
/** Flow on the source side (`matrix[source][target]`). */
|
|
36
|
+
sourceValue: number;
|
|
37
|
+
/** Flow on the target side (`matrix[target][source]`). */
|
|
38
|
+
targetValue: number;
|
|
39
|
+
/** Start angle of the source span, in radians. */
|
|
40
|
+
sourceStart: number;
|
|
41
|
+
/** End angle of the source span, in radians. */
|
|
42
|
+
sourceEnd: number;
|
|
43
|
+
/** Start angle of the target span, in radians. */
|
|
44
|
+
targetStart: number;
|
|
45
|
+
/** End angle of the target span, in radians. */
|
|
46
|
+
targetEnd: number;
|
|
47
|
+
}
|
|
48
|
+
/** The full chord layout. */
|
|
49
|
+
export interface ChordLayout {
|
|
50
|
+
/** One arc per group, in group order. */
|
|
51
|
+
groups: ChordGroupArc[];
|
|
52
|
+
/** One ribbon per non-zero flow pair. */
|
|
53
|
+
ribbons: ChordRibbonSpan[];
|
|
54
|
+
/** Sum of all matrix entries. */
|
|
55
|
+
total: number;
|
|
56
|
+
}
|
|
57
|
+
/** Tunable angles for {@link computeChordLayout}. */
|
|
58
|
+
export interface ChordLayoutOptions {
|
|
59
|
+
/** Angular gap between adjacent groups, in radians. Default: 0.05. */
|
|
60
|
+
gap?: number;
|
|
61
|
+
/** Angle of the first group's start edge, in radians. Default: Math.PI / 2. */
|
|
62
|
+
startAngle?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build a square, non-negative matrix from a link list.
|
|
66
|
+
*
|
|
67
|
+
* @param flows - Directed flows between group indices.
|
|
68
|
+
* @param groupCount - Number of groups (matrix size).
|
|
69
|
+
* @returns A `groupCount x groupCount` matrix of non-negative flows.
|
|
70
|
+
*/
|
|
71
|
+
export declare function chordMatrixFromFlows(flows: ChordFlow[], groupCount: number): number[][];
|
|
72
|
+
/**
|
|
73
|
+
* Compute the arcs and ribbons of a chord diagram.
|
|
74
|
+
*
|
|
75
|
+
* Group `i`'s arc angle is proportional to the sum of row `i`. The cell
|
|
76
|
+
* `matrix[i][j]` is a sub-span on arc `i`; a ribbon joins the span `(i, j)` on
|
|
77
|
+
* arc `i` to the span `(j, i)` on arc `j`. One ribbon is produced per unordered
|
|
78
|
+
* pair whose combined flow is positive, including a self-ribbon when the
|
|
79
|
+
* diagonal is positive.
|
|
80
|
+
*
|
|
81
|
+
* The function never throws. An empty matrix returns empty arrays, and an
|
|
82
|
+
* all-zero matrix returns zero-angle arcs and no ribbons.
|
|
83
|
+
*
|
|
84
|
+
* @param matrix - The square flow matrix.
|
|
85
|
+
* @param options - Gap and start angle.
|
|
86
|
+
* @returns The computed layout.
|
|
87
|
+
*/
|
|
88
|
+
export declare function computeChordLayout(matrix: number[][], options?: ChordLayoutOptions): ChordLayout;
|
|
89
|
+
//# sourceMappingURL=chordLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chordLayout.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/chordLayout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6BAA6B;AAC7B,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,yCAAyC;IACzC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAUvF;AAcD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAAE,EAClB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAuDb"}
|
|
@@ -25,8 +25,19 @@ export { FourierSeries, type FourierSeriesOptions } from './FourierSeries';
|
|
|
25
25
|
export { ComplexPlane, type ComplexPlaneOptions, type Complex } from './ComplexPlane';
|
|
26
26
|
export { PolarPlane, type PolarPlaneOptions } from './ComplexPlane';
|
|
27
27
|
export { BarChart, type BarChartOptions } from './BarChart';
|
|
28
|
+
export { DEFAULT_SERIES_COLORS, cycleColor, toColorList } from './chartColors';
|
|
29
|
+
export { StackedBarChart, type StackedBarChartOptions, type BarChartMode } from './StackedBarChart';
|
|
30
|
+
export { AreaChart, type AreaChartOptions } from './AreaChart';
|
|
31
|
+
export { StepChart, type StepChartOptions, type StepMode } from './StepChart';
|
|
32
|
+
export { CalendarHeatmap, GITHUB_GREENS, type CalendarHeatmapOptions, type CalendarDatum, type CellPosition, } from './CalendarHeatmap';
|
|
28
33
|
export { CandlestickChart, type CandlestickChartOptions, type OHLC } from './CandlestickChart';
|
|
34
|
+
export { RadarChart, type RadarChartOptions } from './RadarChart';
|
|
35
|
+
export { WaterfallChart, type WaterfallChartOptions } from './WaterfallChart';
|
|
29
36
|
export { PieChart, type PieChartOptions, DonutChart, type DonutChartOptions, computeSliceGeometry, type SliceGeometry, type LabelPosition, } from './PieChart';
|
|
37
|
+
export { Treemap, type TreemapOptions, type TreemapColorBy } from './Treemap';
|
|
38
|
+
export { computeTreemapLayout, squarify, treemapNodeValue, type TreemapNode, type TreemapRect, type TreemapTile, } from './treemapLayout';
|
|
39
|
+
export { ChordDiagram, ChordArc, ChordRibbon, type ChordDiagramOptions } from './ChordDiagram';
|
|
40
|
+
export { computeChordLayout, chordMatrixFromFlows, type ChordFlow, type ChordGroupArc, type ChordRibbonSpan, type ChordLayout, type ChordLayoutOptions, } from './chordLayout';
|
|
30
41
|
export { mean, stdDev, quantile, iqr, histogramBins, kde, silvermanBandwidth, boxSummary, extent, niceAxisRange, type HistogramBin, type HistogramBinsOptions, type KdeOptions, type BoxSummary, } from './stats';
|
|
31
42
|
export { Histogram, type HistogramOptions } from './Histogram';
|
|
32
43
|
export { ScatterPlot, type ScatterPlotOptions } from './ScatterPlot';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Squarified treemap layout.
|
|
3
|
+
*
|
|
4
|
+
* The layout maps a value hierarchy to nested rectangles. A node's area is
|
|
5
|
+
* proportional to its value, and the children of a node tile the node's
|
|
6
|
+
* rectangle without gaps or overlap. The squarify strategy keeps each tile's
|
|
7
|
+
* aspect ratio near 1.
|
|
8
|
+
*
|
|
9
|
+
* The functions here are pure. The {@link Treemap} mobject renders the result.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* One node in the input hierarchy.
|
|
13
|
+
*
|
|
14
|
+
* A leaf sets `value`. An internal node sets `children`; its value is the sum
|
|
15
|
+
* of its children, so an explicit `value` on an internal node is ignored.
|
|
16
|
+
* Negative values are clamped to 0, because an area cannot be negative.
|
|
17
|
+
*/
|
|
18
|
+
export interface TreemapNode {
|
|
19
|
+
/** Display name of the node. */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Value of a leaf node. Ignored when `children` is present. */
|
|
22
|
+
value?: number;
|
|
23
|
+
/** Child nodes. Present on internal nodes. */
|
|
24
|
+
children?: TreemapNode[];
|
|
25
|
+
}
|
|
26
|
+
/** An axis-aligned rectangle. `(x, y)` is the lower-left (minimum) corner. */
|
|
27
|
+
export interface TreemapRect {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
}
|
|
33
|
+
/** The computed placement of one node in the hierarchy. */
|
|
34
|
+
export interface TreemapTile {
|
|
35
|
+
/** Index path from the root. The root itself has an empty path. */
|
|
36
|
+
path: number[];
|
|
37
|
+
/** Node name. */
|
|
38
|
+
name: string;
|
|
39
|
+
/** Resolved value (sum of descendants for an internal node). */
|
|
40
|
+
value: number;
|
|
41
|
+
/** Depth in the tree. The root is depth 0. */
|
|
42
|
+
depth: number;
|
|
43
|
+
/** The node's rectangle. */
|
|
44
|
+
rect: TreemapRect;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the value of a node.
|
|
48
|
+
*
|
|
49
|
+
* A leaf returns its own value, clamped to be non-negative. An internal node
|
|
50
|
+
* returns the sum of its children's resolved values.
|
|
51
|
+
*
|
|
52
|
+
* @param node - The node to measure.
|
|
53
|
+
* @returns The non-negative value of the node.
|
|
54
|
+
*/
|
|
55
|
+
export declare function treemapNodeValue(node: TreemapNode): number;
|
|
56
|
+
/**
|
|
57
|
+
* Partition `region` into one rectangle per area, in input order.
|
|
58
|
+
*
|
|
59
|
+
* The areas must already be scaled so their sum equals the region area. The
|
|
60
|
+
* result tiles the region exactly (no gaps, no overlap) when the areas are
|
|
61
|
+
* positive. A zero area yields a zero-size rectangle at the current corner.
|
|
62
|
+
*
|
|
63
|
+
* @param areas - Target areas, best supplied in descending order.
|
|
64
|
+
* @param region - The rectangle to fill.
|
|
65
|
+
* @returns One rectangle per area, aligned to the `areas` index.
|
|
66
|
+
*/
|
|
67
|
+
export declare function squarify(areas: number[], region: TreemapRect): TreemapRect[];
|
|
68
|
+
/**
|
|
69
|
+
* Compute the full treemap layout for a hierarchy.
|
|
70
|
+
*
|
|
71
|
+
* The root fills `region`. Each internal node's children tile the node's
|
|
72
|
+
* rectangle, inset by `padding` so a parent border stays visible. With
|
|
73
|
+
* `padding` 0 the leaves partition the region exactly.
|
|
74
|
+
*
|
|
75
|
+
* The function never throws. An empty hierarchy still returns the root tile.
|
|
76
|
+
*
|
|
77
|
+
* @param root - The root node.
|
|
78
|
+
* @param region - The rectangle the root fills.
|
|
79
|
+
* @param padding - Inset applied before laying out each node's children.
|
|
80
|
+
* @returns Tiles in pre-order (root first), one per node.
|
|
81
|
+
*/
|
|
82
|
+
export declare function computeTreemapLayout(root: TreemapNode, region: TreemapRect, padding?: number): TreemapTile[];
|
|
83
|
+
//# sourceMappingURL=treemapLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treemapLayout.d.ts","sourceRoot":"","sources":["../../../src/mobjects/graphing/treemapLayout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAK1D;AAgCD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CA8C5E;AAqDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,WAAW,EACnB,OAAO,SAAI,GACV,WAAW,EAAE,CAOf"}
|