128 lines
3.9 KiB
JavaScript
128 lines
3.9 KiB
JavaScript
|
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) + ')');
|