// 虚拟构造同横纵坐标的两组数据
var sData1 = (function () {
var d = [];
var len = 40;
var value;
while (len--) {
d.push([
Math.round(Math.random()*10) * (Math.round(Math.random()*10) > 5 ? 1 : -1),
Math.round(Math.random()*10) * (Math.round(Math.random()*10) > 5 ? 1 : -1),
Math.round(Math.random()*20)
]);
}
return d;
})();
var sData2 = (function () {
var d = [];
var len = sData1.length;
for (var i = 0; i < len; i++) {
d.push([
sData1[i][0],
sData1[i][1],
Math.round(Math.random()*15)
]);
}
return d;
})();
option = {
color : ['rgba(255, 69, 0, 0.5)', 'rgba(30, 144, 255, 0.5)'],
title : {
text: '饼图代替散点',
subtext : '混搭'
},
tooltip : {
trigger: 'item',
formatter: "{b} : {c} ({d}%)"
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
restore : {show: true},
saveAsImage : {show: true}
}
},
xAxis : [
{
type : 'value',
splitNumber: 2
}
],
yAxis : [
{
type : 'value',
splitNumber: 2
}
],
animation: false,
series : [
{
type:'scatter',
symbol: 'none',
data: sData1
},
{
type:'scatter',
symbol: 'none',
data: sData2
}
]
};
function buildPieSeries(){
var xAxis = myChart.component.xAxis.getAxis(0);
var yAxis = myChart.component.yAxis.getAxis(0);
var len = sData1.length;
option.series = option.series.slice(0,2);
option.legend = {
data : ['系列1', '系列2']
};
while (len--) {
option.series.push({
type: 'pie',
itemStyle : {
normal : {
label : {
show : false
},
labelLine : {
show : false
}
}
},
radius : sData1[len][2] + sData2[len][2],
center: [
xAxis.getCoord(sData1[len][0]),
yAxis.getCoord(sData1[len][1])
],
data: [
{name: '系列1', value: sData1[len][2]},
{name: '系列2', value: sData2[len][2]}
]
})
}
option.animation = true;
myChart.setOption(option, true);
window.onresize = buildPieSeries;
}
// 构造出一系列的饼图代替原来的散点,需要在散点画出来后才能获取到散点的坐标,setTimeout!
setTimeout(buildPieSeries, 100);