Javascript 如何创建比例堆叠柱?

Javascript 如何创建比例堆叠柱?,javascript,charts,google-visualization,Javascript,Charts,Google Visualization,我有一个堆叠列的脚本,我想使它与每个条成比例,条内有标签。我该怎么做呢?我尝试了一些编辑,但不起作用。我目前正在使用谷歌图表。请帮帮我。谢谢 以下是脚本: function drawVisualization() { var data = google.visualization.arrayToDataTable([ ['Year', 'Austria', 'Belgium', 'Czech Republic', 'Finland', 'France', 'Germany'], ['2003'

我有一个堆叠列的脚本,我想使它与每个条成比例,条内有标签。我该怎么做呢?我尝试了一些编辑,但不起作用。我目前正在使用谷歌图表。请帮帮我。谢谢

以下是脚本:

function drawVisualization() {

var data = google.visualization.arrayToDataTable([
['Year', 'Austria', 'Belgium', 'Czech Republic', 'Finland', 'France', 'Germany'],
['2003',  1336060,   3817614,       974066,       1104797,   6651824,  15727003],
['2004',  1538156,   3968305,       928875,       1151983,   5940129,  17356071],
['2005',  1576579,   4063225,       1063414,      1156441,   5714009,  16716049],
['2006',  1600652,   4604684,       940478,       1167979,   6190532,  18542843],
['2007',  1968113,   4013653,       1037079,      1207029,   6420270,  19564053],
['2008',  1901067,   6792087,       1037327,      1284795,   6240921,  19830493]
]);
var options = {
            title:"Yearly Coffee Consumption by Country",
            width:1000, height:400,
            isStacked: true,
            hAxis: {title: "Year"}
            };
var chart = new    google.visualization.ColumnChart(document.getElementById('visualization'));
        chart.draw(data,options);

}

google.setOnLoadCallback(drawVisualization);
如果我的数据是字符串/文本呢?如何将标签放入图形中并使其成比例?有可能吗

示例数据:

['Year', 'Austria', 'Belgium', 'Germany'],
['2003',  AB,   BA,      CA],
['2004',  AC,   BB,    CB],
['2005',  AD,   BC, CC]

使用DataView计算每个单元格的比例总计,并创建注释以标记条形图:

var columns = [0];
for (var i = 1; i < data.getNumberOfColumns(); i++) {
    // add a column that calculates the proportional value of this column to the total
    columns.push({
        type: 'number',
        label: data.getColumnLabel(i),
        calc: (function (col) {
            return function (dt, row) {
                var val = dt.getValue(row, col);
                var total = 0;
                for (var j = 1; j < dt.getNumberOfColumns(); j++) {
                    total += dt.getValue(row, j);
                }
                return (total == 0) ? null : {v: val / total, f: val.toString()}; 
            };
        })(i)
    });
    // add an annotation column that puts a label on the bar
    columns.push({
        type: 'string',
        role: 'annotation',
        sourceColumn: i,
        calc: 'stringify'
    });
}

view.setColumns(columns);
var列=[0];
对于(var i=1;i

参见此处示例:

推送的含义是什么?如果数据是文本/字符串呢?这是相同的公式?堆叠的其他层没有标签
push
方法是一种
Array
方法,它将一个新元素添加到数组的末尾。图表的所有层都有注释,但可能没有足够的空间显示它们。如果你增加图表的高度,你可以看到他们:好的,我明白了。如果我的数据不是整数怎么办?如果是文本或字符串呢?代码的结构可能需要更改一点。您是否可以使用希望使用的示例数据更新您的问题?