| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | 
							- 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) + ')');
 
 
  |