-
Notifications
You must be signed in to change notification settings - Fork 163
/
Copy pathsequence-scatter.ts
70 lines (65 loc) · 1.64 KB
/
sequence-scatter.ts
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
import { registerSequenceScatter } from '../../../../src';
import { VChart } from '@visactor/vchart';
import trainingData1 from '../data/sequence-scatter/Training_process1/data.json';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
// import trainingData2 from '../data/sequence-scatter/Training_process2/data.json';
import bgimgData from '../data/sequence-scatter/Training_process1/bgimg_data.json';
const origianlData = trainingData1;
// const origianlData = trainingData2;
const bgData = {};
if (bgimgData) {
// 假设每个帧对应一个300x300的RGB矩阵
Object.keys(bgimgData).forEach(inter => {
// 确保原始数据中有这一帧
if (origianlData[inter]) {
bgData[inter] = bgimgData[inter];
}
});
}
const chartData = {};
Object.keys(origianlData).forEach(inter => {
chartData[inter] = [];
origianlData[inter].projection.forEach(pos => {
chartData[inter].push({
x: pos[0],
y: pos[1]
});
});
});
const spec = {
type: 'sequenceScatter',
data: chartData,
xField: 'x',
yField: 'y',
backgroundColors: bgData,
infoLabel: {
visible: true,
style: {
text: datum => {
return 'interation: ' + datum.inter;
}
}
},
player: {
orient: 'bottom',
auto: true,
interval: 2000,
duration: 2000
}
};
const run = () => {
registerSequenceScatter();
const cs = new VChart(spec, {
dom: document.getElementById('chart') as HTMLElement,
//theme: 'dark',
onError: err => {
console.error(err);
}
});
console.time('renderTime');
cs.renderSync();
console.timeEnd('renderTime');
window['vchart'] = cs;
console.log(cs);
};
run();