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
124
125
126
127
128
| var fs = require('fs');
| // http://international.caixin.com/2013-09-06/100579154.html
| var dataSource = [
| ['美国','叙利亚反对派',100,'green'],
| ['美国','阿萨德',100,'red'],
| ['美国','伊朗',100,'red'],
| ['美国','塞西',100,'yellow'],
| ['美国','哈马斯',100,'red'],
| ['美国','以色列',100,'green'],
| ['美国','穆斯林兄弟会',100,'yellow'],
| ['美国','基地组织',100,'red'],
| ['俄罗斯','叙利亚反对派',100,'red'],
| ['俄罗斯','阿萨德',100,'green'],
| ['伊朗','叙利亚反对派',100,'red'],
| ['伊朗','阿萨德',100,'green'],
| ['伊朗','黎巴嫩什叶派',100,'green'],
| ['伊朗','哈马斯',100,'green'],
| ['以色列','叙利亚反对派',100,'green'],
| ['以色列','阿萨德',100,'red'],
| ['以色列','哈马斯',100,'red'],
| ['土耳其','塞西',100,'red'],
| ['土耳其','穆斯林兄弟会',100,'green'],
| ['土耳其','叙利亚反对派',100,'green'],
| ['土耳其','阿萨德',100,'red'],
| ['卡塔尔','叙利亚反对派',100,'green'],
| ['卡塔尔','阿萨德',100,'red'],
| ['卡塔尔','塞西',100,'red'],
| ['卡塔尔','穆斯林兄弟会',100,'green'],
| ['卡塔尔','哈马斯',100,'green'],
| ['沙特','叙利亚反对派',100,'green'],
| ['沙特','黎巴嫩逊尼派',100,'green'],
| ['沙特','塞西',100,'green'],
| ['沙特','穆斯林兄弟会',100,'red'],
| ['塞西','穆斯林兄弟会',100,'red'],
| ['黎巴嫩逊尼派','叙利亚反对派',100,'green'],
| ['黎巴嫩逊尼派','阿萨德',100,'red'],
| ['黎巴嫩什叶派','叙利亚反对派',100,'red'],
| ['黎巴嫩什叶派','阿萨德',100,'green'],
| ['哈马斯','叙利亚反对派',100,'green'],
| ['哈马斯','塞西',100,'red'],
| ['穆斯林兄弟会','阿萨德',100,'red'],
| ['基地组织','叙利亚反对派',100,'green'],
| ['基地组织','阿萨德',100,'red'],
| ['基地组织','沙特',100,'red']
| ];
| var groupIndices = {};
| var count = 0;
| for (var i = 0; i < dataSource.length; i++) {
| var country = dataSource[i][0];
| var country2 = dataSource[i][1];
| if (groupIndices[country] === undefined) {
| groupIndices[country] = count++;
| }
| if (groupIndices[country2] === undefined) {
| groupIndices[country2] = count++;
| }
| }
| for (var i = 0; i < dataSource.length; i++) {
| var target = dataSource[i][1];
| if (groupIndices[target] === undefined) {
| groupIndices[target] = count++;
| }
| }
| var attitudeMap = {
| 'green' : 0,
| 'red' : 1,
| 'yellow' : 2
| }
| var series = [{
| name : '支持',
| type : 'chord',
| showScaleText : false,
| data : [],
| matrix : []
| }, {
| name : '反对',
| type : 'chord',
| showScaleText : false,
| data : [],
| matrix : []
| }, {
| name : '未表态',
| type : 'chord',
| showScaleText : false,
| data : [],
| matrix : []
| }];
| for (var k = 0; k < 3; k++) {
| series[k].matrix = [];
| for(var countryName in groupIndices) {
| var idx = groupIndices[countryName];
| series[k].data[idx] = {
| name : countryName
| }
| }
| for (var i = 0; i < count; i++) {
| series[k].matrix[i] = [];
| for (var j = 0; j < count; j++) {
| series[k].matrix[i][j] = 0;
| }
| }
| }
| for (var i = 0; i < dataSource.length; i++) {
| var sourceIdx = groupIndices[dataSource[i][0]];
| var targetIdx = groupIndices[dataSource[i][1]];
| var val = dataSource[i][2];
| var serieIdx = attitudeMap[dataSource[i][3]];
| var matrix = series[serieIdx].matrix;
| matrix[sourceIdx][targetIdx] += 100;
| matrix[targetIdx][sourceIdx] += 10;
| }
|
| var res = {
| title : {
| text : "中东地区的敌友关系",
| subtext: '数据来自财新网',
| x:'right',
| y:'bottom'
| },
| legend : {
| data : Object.keys(groupIndices),
| orient : 'vertical',
| x : 'left'
| },
| series : series
| }
|
| fs.writeFileSync("middle-east.js", 'define(' + JSON.stringify(series) + ')');
|
|