环形图图列点击隐藏时图中百分比不变echarts 饼配置项内容和展示

环形图图列点击隐藏时图中百分比不变的解决方案。通过追加其他 选项来保证环形图的完整性

配置项如下
      // echarts 3
app.title = '环形图';
var $legendData = ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎'];
var $legendSelected = {'直接访问':false};
var $seriesData = [
    {value:335, name:'直接访问'},
    {value:310, name:'邮件营销'},
    {value:234, name:'联盟广告'},
    {value:135, name:'视频广告'},
    {value:1548, name:'搜索引擎'}
];


var option = {
        tooltip: {
            trigger: 'item',
            formatter: "{a} <br/>{b}: {c} ({d}%)"
        },
        legend: {
            orient: 'vertical',
            x: 'left',
            data:$legendData,
            selected:$legendSelected

        },
        series: [
            {
                name:'访问来源',
                type:'pie',
                radius: ['50%', '70%'],
                avoidLabelOverlap: false,
                label: {
                    normal: {
                        show: false,
                        position: 'center'
                    },
                    emphasis: {
                        show: true,
                        textStyle: {
                            fontSize: '30',
                            fontWeight: 'bold'
                        }
                    }
                },
                labelLine: {
                    normal: {
                        show: false
                    }
                },
                data:$seriesData
            }
        ]
    };
myChart.on('legendselectchanged', function (params) {
    if (!$seriesData || $seriesData.length <= 0) return
    var legendData = []
    var seriesData = []
    var selected = params.selected;
    var selectedMode = false;
    for (var i in params.selected) {
        if( params.selected[i] && (i != '其他' && i != '全部')){
            selectedMode = true;
        }
    }
    console.log('params');
    console.log(params);


    var v = null;
    for (var i = 0; i < $seriesData.length; i++) {
        var item = $seriesData[i]
        console.log(params.selected[item.name]);
        if( !params.selected[item.name] ){
            if( v === null ){
                v = item.value;
            }else{
                v += item.value;
            }
        }
        if(item.name == '其他' || item.name == '全部'){
            continue;
        }

        legendData.push(item.name)
        seriesData.push({ value: item.value, name: item.name, })
    }
    
    if( v !== null ){
        if( !selectedMode ){
            legendData.push('全部');
            selected['全部'] = true;
            seriesData.push({ value: v, name: '全部'})
        }else{
            legendData.push('其他');
            selected['其他'] = true;
            seriesData.push({ value: v, name: '其他'})
        }
    }
    console.log(legendData);
    console.log(seriesData);

    var $option = option
    $option.legend.data = legendData
    $option.legend.selected = selected
    //$option.legend.selectedMode = selectedMode
    $option.series[0].data = seriesData
    myChart.clear()

    console.log(option);
    myChart.setOption(option)

});
    
截图如下