1
+ <!doctype html>
2
+ < html >
3
+
4
+ < head >
5
+ < title > Sankey diagram</ title >
6
+ < script src ="
https://cdn.jsdelivr.net/npm/[email protected] /dist/Chart.js "
> </ script >
7
+ < script src ="utils.js "> </ script >
8
+ < link rel ="stylesheet " type ="text/css " href ="style.css ">
9
+ </ link >
10
+ </ head >
11
+
12
+ < body >
13
+ < div class ="canvas-holder ">
14
+ < canvas id ="chart-area "> </ canvas >
15
+ </ div >
16
+
17
+ < script >
18
+ /* global Utils, Chart */
19
+ const colors2 = [ '#fff5eb' , '#fee6ce' , '#fdd0a2' , '#fdae6b' , '#fd8d3c' , '#f16913' , '#d94801' , '#a63603' , '#7f2704' ] ;
20
+ const assigned = { } ;
21
+
22
+ function getColor ( name ) {
23
+ return assigned [ name ] || ( assigned [ name ] = colors2 [ Object . keys ( assigned ) . length % colors2 . length ] ) ;
24
+ }
25
+
26
+ Utils . load ( ( ) => {
27
+ Chart . defaults . fontSize = 9 ;
28
+ const ctx = document . getElementById ( 'chart-area' ) . getContext ( '2d' ) ;
29
+ window . chart = new Chart ( ctx , {
30
+ type : 'sankey' ,
31
+ data : {
32
+ datasets : [ {
33
+ data : [
34
+ { from : 'Brazil' , to : 'Portugal' , flow : 5 } ,
35
+ { from : 'Brazil' , to : 'France' , flow : 1 } ,
36
+ { from : 'Brazil' , to : 'Spain' , flow : 1 } ,
37
+ { from : 'Brazil' , to : 'England' , flow : 1 } ,
38
+ { from : 'Canada' , to : 'Portugal' , flow : 1 } ,
39
+ { from : 'Canada' , to : 'France' , flow : 5 } ,
40
+ { from : 'Canada' , to : 'England' , flow : 1 } ,
41
+ { from : 'Mexico' , to : 'Portugal' , flow : 1 } ,
42
+ { from : 'Mexico' , to : 'France' , flow : 1 } ,
43
+ { from : 'Mexico' , to : 'Spain' , flow : 5 } ,
44
+ { from : 'Mexico' , to : 'England' , flow : 1 } ,
45
+ { from : 'USA' , to : 'Portugal' , flow : 1 } ,
46
+ { from : 'USA' , to : 'France' , flow : 1 } ,
47
+ { from : 'USA' , to : 'Spain' , flow : 1 } ,
48
+ { from : 'USA' , to : 'England' , flow : 5 } ,
49
+ { from : 'Portugal' , to : 'Angola' , flow : 2 } ,
50
+ { from : 'Portugal' , to : 'Senegal' , flow : 1 } ,
51
+ { from : 'Portugal' , to : 'Morocco' , flow : 1 } ,
52
+ { from : 'Portugal' , to : 'South Africa' , flow : 3 } ,
53
+ { from : 'France' , to : 'Angola' , flow : 1 } ,
54
+ { from : 'France' , to : 'Senegal' , flow : 3 } ,
55
+ { from : 'France' , to : 'Mali' , flow : 3 } ,
56
+ { from : 'France' , to : 'Morocco' , flow : 3 } ,
57
+ { from : 'France' , to : 'South Africa' , flow : 1 } ,
58
+ { from : 'Spain' , to : 'Senegal' , flow : 1 } ,
59
+ { from : 'Spain' , to : 'Morocco' , flow : 3 } ,
60
+ { from : 'Spain' , to : 'South Africa' , flow : 1 } ,
61
+ { from : 'England' , to : 'Angola' , flow : 1 } ,
62
+ { from : 'England' , to : 'Senegal' , flow : 1 } ,
63
+ { from : 'England' , to : 'Morocco' , flow : 2 } ,
64
+ { from : 'England' , to : 'South Africa' , flow : 7 } ,
65
+ { from : 'South Africa' , to : 'China' , flow : 5 } ,
66
+ { from : 'South Africa' , to : 'India' , flow : 1 } ,
67
+ { from : 'South Africa' , to : 'Japan' , flow : 3 } ,
68
+ { from : 'Angola' , to : 'China' , flow : 5 } ,
69
+ { from : 'Angola' , to : 'India' , flow : 1 } ,
70
+ { from : 'Angola' , to : 'Japan' , flow : 3 } ,
71
+ { from : 'Senegal' , to : 'China' , flow : 5 } ,
72
+ { from : 'Senegal' , to : 'India' , flow : 1 } ,
73
+ { from : 'Senegal' , to : 'Japan' , flow : 3 } ,
74
+ { from : 'Mali' , to : 'China' , flow : 5 } ,
75
+ { from : 'Mali' , to : 'India' , flow : 1 } ,
76
+ { from : 'Mali' , to : 'Japan' , flow : 3 } ,
77
+ { from : 'Morocco' , to : 'China' , flow : 5 } ,
78
+ { from : 'Morocco' , to : 'India' , flow : 1 } ,
79
+ { from : 'Morocco' , to : 'Japan' , flow : 3 }
80
+ ] ,
81
+ colorFrom : ( c ) => getColor ( c . dataset . data [ c . dataIndex ] . from ) ,
82
+ colorTo : ( c ) => getColor ( c . dataset . data [ c . dataIndex ] . to )
83
+ } ] ,
84
+ }
85
+ } ) ;
86
+
87
+ } ) ;
88
+ </ script >
89
+ </ body >
90
+
91
+ </ html >
0 commit comments