Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google图表嵌套PieChart将列返回为null_Javascript_Google Visualization_Google Pie Chart - Fatal编程技术网

Javascript Google图表嵌套PieChart将列返回为null

Javascript Google图表嵌套PieChart将列返回为null,javascript,google-visualization,google-pie-chart,Javascript,Google Visualization,Google Pie Chart,我有一个嵌套的PieChart,渲染效果很好。我添加了google.visualization.events.addListener,以便在单击时获取所选数据。我有一个包含多个图表的页面,它们都返回行和列的值。我的图表同时包含两年的数据,我需要区分用户正在单击哪一组数据。两组数据都返回行,但都不返回列。以下是我正在使用的代码: google.setOnLoadCallback(drawLocationChart); function drawLocationChart() { var

我有一个嵌套的PieChart,渲染效果很好。我添加了google.visualization.events.addListener,以便在单击时获取所选数据。我有一个包含多个图表的页面,它们都返回行和列的值。我的图表同时包含两年的数据,我需要区分用户正在单击哪一组数据。两组数据都返回行,但都不返回列。以下是我正在使用的代码:

google.setOnLoadCallback(drawLocationChart);
function drawLocationChart() {

    var newData5 = google.visualization.arrayToDataTable(
    [["Location","Last 12mo Spend"],
    ["OMAHA, NE 68137",17916.2],
    ["SOUTHLAKE, TX 76092",12787.89],
    ["SUNNYVALE, CA 94085",7539.96],
    ["GREENVILLE, SC 29607",6627.21],
    ["TAMPA, FL 33634",3210.89]]);

    var oldData5 = google.visualization.arrayToDataTable(
    [["Location","Previous 12mo Spend"],
    ["OMAHA, NE 68137",17316.2],
    ["SOUTHLAKE, TX 76092",9787.89],
    ["SUNNYVALE, CA 94085",12539.96],
    ["GREENVILLE, SC 29607",9927.21],
    ["TAMPA, FL 33634",3821.89]]);

    var options5 = {
        colors: [
            '#9DB86D',
            '#C6A2BB',
            '#FFB03B',
            '#95AB63',
            '#737373',
            '#1aa2e5',
            '#6C4862',
            '#80551E',
            '#536820',
            '#3A3A3A'
        ],
        pieSliceText: 'none',
        responsive: true
    };

    var chartDiff5 = new google.visualization.PieChart(document.getElementById('location'));
    var diffData5 = chartDiff5.computeDiff(oldData5, newData5);
    var formatter5 = new google.visualization.NumberFormat({pattern:'$###,###'});
    formatter5.format(diffData5, 1);
    formatter5.format(diffData5, 2);

    chartDiff5.draw(diffData5, options5);

    google.visualization.events.addListener(chartDiff5, 'select', function selectHandler5() {
        var selection5 = chartDiff5.getSelection();

        for (var i5 = 0; i5 < selection5.length; i5++) {
            var item5 = selection5[i5];
            // Here diffData5.getFormattedValue(item5.column, 0) ALWAYS returns null
            var str5 = diffData5.getFormattedValue(item5.row, 0);
        }
    });
}
任何帮助都将不胜感激。

将始终为饼图上的列返回null

因为用户只有一个饼图切片可供选择

因此,饼图切片=行

通常,饼图只提供两列数据

但是,computeDiff生成的数据包含三列

列0=标签 第1列=表1中的值 第2列=表2中的值


因此,饼图不需要列

谢谢WhiteHat,但问题是无法获取行。问题是我得到了一个空的列值。我忘了添加,这个饼图有两组数据,它看起来像这样,我认为它被称为差异饼图:如答案中所述,在饼图上使用时,getSelection将始终为column返回null,因为不需要column…在Diff饼图中,每个片有两种颜色,但仍然只有一个片。使用getSelection无法确定单击了切片的哪个部分。。。