echarts嵌套饼图联动实现
效果解释:当点击内部饼图时,外环饼图会跟随内部选择的饼图变化
效果图:
代码:
<html>
<head>
<title>嵌套饼图联动</title>
</head>
<script type="text/javascript" src="js/echarts.min.js"></script>
<body>
<div id="_top" style="600px;height: 600px;"></div>
</body>
<script type="text/javascript">
var myecharts = echarts.init(document.getElementById('_top'));
var option={
legend: { //图例
show:false, //是否显示图例
orient: 'vertical', //布局方向
x: 'left', //图例相对位置
data:['一班','二班','三班'] //图例内容
},
series: [ //内容
{
name:'班级人数占比', //内容标题
type:'pie', //图标样式
selectedMode: 'single', //选中模式:单选
radius: [0, '32%'], //饼图大小,[x,y]:x表示内半径,y表示外半径
label: { //标签
normal: {
position: 'inner' //标签位置:内部
}
},
labelLine: { //提示框
normal: {
show: false //是否显示
}
},
color:['#0A276D','#1040AF','#1F5DEA','#628CF0'], //颜色
name:['一班','二班','三班'], //内容名称
data:[ //数据
{value:50,name:'一班',selected:true}, //selected:是否被选中
{value:46,name:'二班'},
{value:54,name:'三班'},
],
},
{
name:'男女占比',
type:'pie',
radius: ['42%', '55%'],
label: {
normal: {
}
},
labelLine:{
normal:{
length:2,
}
},
color:['#205E3F','#16DA69','red'],
data:[
{value:21,name:'男生'},
{value:29,name:'女生'},
],
label:
{
normal: {
textStyle: {
color: '#aaa' //提示框字体颜色
}
}
},
}],
backgroundColor: "#190c12", //背景颜色
};
myecharts.setOption(option);
//嵌套饼图联动
function eConsole(param) {
if (typeof param.seriesIndex != 'undefined') {
if (param.type == 'click') { //判断事件类型:点击
//写法一:获取饼图散区个数,按照图例获取
var peiLenght= option.legend.data.length;
//写法二:获取饼图散区个数,按照series中data获取
//var peiLenght= option.series[0].data.length;
for(var i=0;i<peiLenght;i++){
//seriesIndex==0:选择内环饼图;param.dataIndex==i:散区
if(param.seriesIndex==0&¶m.dataIndex==i){
if(i==0){
var option_1 = myecharts.getOption();
option_1.series[1].name='一班男女占比';
option_1.series[1].color=['#205E3F','#16DA69','red'],
option_1.series[1].data=[
{value:21,name:'男生'},
{value:29,name:'女生'},
];
myecharts.setOption(option_1);
}else if(i==1){
var option_2 = myecharts.getOption();
option_2.series[1].name='二班男女占比';
option_2.series[1].color=['#16DA69','#205E3F','red'],
option_2.series[1].data=[
{value:20,name:'男生'},
{value:26,name:'女生'},
];
myecharts.setOption(option_2);
}else if(i==2){
var option_3 = myecharts.getOption();
option_3.series[1].name='三班男女占比';
option_3.series[1].color=['blue','pink','red'],
option_3.series[1].data=[
{value:30,name:'男生'},
{value:24,name:'女生'},
];
myecharts.setOption(option_3);
}
}
}
}
}
}
myecharts.on("click", eConsole);
</script>
</html>
分析:
嵌套饼图联动实现 原理:是两个饼图由于内外半径大小控制而形成的,然后对于两个饼图进行不同的赋值,取得了嵌套的效果,再对内部饼图进行点击事件监控,饼图散区被点击后,外部饼图采取相对变化,便实现了内外饼图的联动效果