amCharts pie - 如何在rollOverSlice上获取切片?

时间:2015-07-01 00:49:31

标签: javascript charts amcharts

我在浏览amCharts文档时遇到了很多困难,我似乎无法在线找到答案。

我正在使用amCharts饼图,当鼠标滑过切片时,我想要做一些事情,其中​​一件事就是让切片拉出当你点击幻灯片时发生的事情{{ 3}}

这是我根据文档尝试的,但似乎不起作用:

var pieChartData = [
    {
        asset: 'Funiture',
        marketValue: 50000.00
    }, {
        asset: 'Cash',
        marketValue: 6250.00
    }, {
        asset: 'Car',
        marketValue: 10000.00
    }, {
        asset: 'Other',
        marketValue: 11250.00
    }
];

    chartAsset = AmCharts.makeChart(
        'asset--chart', {
            type: 'pie',

            dataProvider: pieChartData,
            valueField: 'marketValue',
            titleField: 'asset',

            startEffect: 'easeOutSine',
            pulledField: 'pullOut',
            //pullOutOnlyOne: true,
            // pullOutEffect: 'easeInSine',

            responsive: {
              enabled: true
            },

            labelsEnabled: false,

            balloon: {
                fillAlpha: 0.95,
                borderThickness: 1,
                borderColor: '#000000',
                shadowAlpha: 0,
            }
        }
    );


    chartAsset.addListener('rollOverSlice', function(e) {
        console.log(e);

        /**** Doesn't work: ******/
        pieChartData[e.dataItem.index].pullOut = true;
        chartAssetAllocation.dataProvider = pieChartData;
        chartAssetAllocation.validateData(); 
    });  

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您无法直接触发拉出,但有一种方法可以模拟切片上的点击。 (参见clickSlice
另外你必须添加另一个用于留下切片的监听器,因此它将返回其原始状态。

    chartAsset.addListener('rollOverSlice', function(e) {
        chartAsset.clickSlice(e.dataItem.index);
    });

    chartAsset.addListener('rollOutSlice', function(e) {
        chartAsset.clickSlice(e.dataItem.index);
    });

这里有工作fiddle

另一种方法是使用CSS仅改变切片的可视化。可以找到一个例子here