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