-
Notifications
You must be signed in to change notification settings - Fork 16
/
HeatmapVis.stories.tsx
123 lines (111 loc) · 2.65 KB
/
HeatmapVis.stories.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import type { HeatmapVisProps } from '@h5web/lib';
import {
HeatmapVis,
ScaleType,
getDomain,
getMockDataArray,
INTERPOLATORS,
} from '@h5web/lib';
import type { Meta, Story } from '@storybook/react/types-6-0';
import ndarray from 'ndarray';
import FillHeight from './decorators/FillHeight';
const dataArray = getMockDataArray('/nD_datasets/twoD');
const domain = getDomain(dataArray.data);
const alphaArray = ndarray(dataArray.data.map((x) => Math.abs(x)));
const alphaDomain = getDomain(alphaArray);
const Template: Story<HeatmapVisProps> = (args) => <HeatmapVis {...args} />;
export const Default = Template.bind({});
Default.args = {
dataArray,
domain,
};
export const Domain = Template.bind({});
Domain.args = {
dataArray,
domain: [-400, 400],
};
export const ColorMap = Template.bind({});
ColorMap.args = {
dataArray,
domain,
colorMap: 'Rainbow',
};
export const InvertColorMap = Template.bind({});
InvertColorMap.args = {
dataArray,
domain,
colorMap: 'Rainbow',
invertColorMap: true,
};
export const AxisValues = Template.bind({});
AxisValues.args = {
dataArray,
domain,
abscissaParams: {
value: Array.from(
{ length: dataArray.shape[1] }, // works even when right edge of last pixel is not provided
(_, i) => 100 + 10 * i
),
},
ordinateParams: {
value: Array.from(
{ length: dataArray.shape[0] + 1 },
(_, i) => (-5 + 0.5 * i) / 100
),
},
};
export const DescendingAxisValues = Template.bind({});
DescendingAxisValues.args = {
dataArray,
domain,
abscissaParams: {
value: Array.from(
{ length: dataArray.shape[1] }, // works even when right edge of last pixel is not provided
(_, i) => -100 - 10 * i
),
},
ordinateParams: {
value: Array.from(
{ length: dataArray.shape[0] + 1 },
(_, i) => (5 - 0.5 * i) / 100
),
},
};
export const Alpha = Template.bind({});
Alpha.args = {
dataArray,
domain,
alphaArray,
alphaDomain,
};
export default {
title: 'Visualizations/HeatmapVis',
component: HeatmapVis,
parameters: { layout: 'fullscreen', controls: { sort: 'requiredFirst' } },
decorators: [FillHeight],
args: {
colorMap: 'Viridis',
scaleType: ScaleType.Linear,
layout: 'cover',
showGrid: true,
},
argTypes: {
colorMap: {
control: { type: 'select' },
options: Object.keys(INTERPOLATORS),
},
scaleType: {
control: { type: 'inline-radio' },
options: [
ScaleType.Linear,
ScaleType.Log,
ScaleType.SymLog,
ScaleType.Sqrt,
],
},
layout: {
control: { type: 'inline-radio' },
options: ['contain', 'cover', 'fill'],
},
},
} as Meta;