Skip to content

Commit faf30ba

Browse files
committed
Setup simple Treemap example
1 parent 4c85a54 commit faf30ba

1 file changed

Lines changed: 62 additions & 3 deletions

File tree

  • packages/layerchart/src/routes/docs/components/Treemap

packages/layerchart/src/routes/docs/components/Treemap/+page.svelte

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,26 @@
2929
.sum((d) => d.value)
3030
.sort(sortFunc('value', 'desc'));
3131
32+
const simpleRoot = hierarchy({
33+
name: 'root',
34+
children: [
35+
{ name: 'A', value: 1000 },
36+
{ name: 'B', value: 900 },
37+
{ name: 'C', value: 800 },
38+
{ name: 'D', value: 700 },
39+
{ name: 'E', value: 600 },
40+
{ name: 'F', value: 500 },
41+
{ name: 'G', value: 400 },
42+
{ name: 'H', value: 300 },
43+
{ name: 'I', value: 200 },
44+
{ name: 'J', value: 100 },
45+
{ name: 'K', value: 100 },
46+
],
47+
}).sum((d) => {
48+
// @ts-expect-error
49+
return d.value;
50+
});
51+
3252
let tile: ComponentProps<typeof Treemap>['tile'] = $state('squarify');
3353
let colorBy = $state('children');
3454
@@ -44,6 +64,10 @@
4464
chromatic.schemeSpectral[9].filter((c) => hsl(c).h < 60 || hsl(c).h > 90) // filter out hard to see yellow and green
4565
);
4666
67+
const simpleOrdinalColor = scaleOrdinal(
68+
chromatic.schemeSpectral[11].filter((c) => hsl(c).h < 60 || hsl(c).h > 90) // filter out hard to see yellow and green
69+
);
70+
4771
function getNodeColor(node: HierarchyNode<any>, colorBy: string) {
4872
switch (colorBy) {
4973
case 'children':
@@ -64,7 +88,7 @@
6488

6589
<h1>Example</h1>
6690

67-
<h1>Complex</h1>
91+
<h2>Playground</h2>
6892

6993
<div class="grid gap-1 mb-4">
7094
<div class="grid grid-cols-[6fr_3fr] gap-1">
@@ -98,13 +122,13 @@
98122
</div>
99123
</div>
100124

101-
<Preview>
125+
<Preview data={root}>
102126
<div class="h-[800px]">
103127
<Chart>
104128
{#snippet children({ context })}
105129
<Svg>
106130
<Treemap
107-
hierarchy={root.copy()}
131+
hierarchy={root}
108132
{tile}
109133
{paddingOuter}
110134
{paddingInner}
@@ -183,3 +207,38 @@
183207
</Chart>
184208
</div>
185209
</Preview>
210+
211+
<h2>Simple / flat</h2>
212+
213+
<Preview data={simpleRoot}>
214+
<div class="h-[400px]">
215+
<Chart>
216+
<Svg>
217+
<Treemap hierarchy={simpleRoot}>
218+
{#snippet children({ nodes })}
219+
{#each nodes.filter((n) => n.depth > 0) as node}
220+
<Group x={node.x0} y={node.y0}>
221+
{@const nodeWidth = node.x1 - node.x0}
222+
{@const nodeHeight = node.y1 - node.y0}
223+
<Rect
224+
width={nodeWidth}
225+
height={nodeHeight}
226+
stroke="rgb(0, 0, 0, 0.2)"
227+
fill={simpleOrdinalColor(node.data.name)}
228+
/>
229+
<Text
230+
x={nodeWidth / 2}
231+
y={nodeHeight / 2}
232+
value={node.data.name}
233+
fill="rgb(0, 0, 0, 0.8)"
234+
textAnchor="middle"
235+
verticalAnchor="middle"
236+
/>
237+
</Group>
238+
{/each}
239+
{/snippet}
240+
</Treemap>
241+
</Svg>
242+
</Chart>
243+
</div>
244+
</Preview>

0 commit comments

Comments
 (0)