Charts 如何在google图表中显示总计

Charts 如何在google图表中显示总计,charts,google-visualization,visualization,Charts,Google Visualization,Visualization,我想在列的末尾显示每个堆叠列的总计。 在下面的setColumns视图代码中,我无法计算出如何合计列。有人能帮我敲定吗 我希望在堆叠柱的末端达到如下所示的总数: [![在此处输入图像描述][1][1] 这是我到目前为止的代码,它适用于图表,但不完全适用于显示总标签 myDrawFunc(){ var data = new google.visualization.DataTable(); data.addColu

我想在列的末尾显示每个堆叠列的总计。 在下面的setColumns视图代码中,我无法计算出如何合计列。有人能帮我敲定吗

我希望在堆叠柱的末端达到如下所示的总数: [![在此处输入图像描述][1][1]

这是我到目前为止的代码,它适用于图表,但不完全适用于显示总标签

             myDrawFunc(){
              var data = new google.visualization.DataTable();

              data.addColumn('string', 'Scenario');

              for (var i = 0; i < rows.length; i++) {
                ptype = rows[i].cells[2].querySelector('.part').value;
                if (ptype.length > 0) {
                  console.log(ptype);
                  // Declare columns
                  data.addColumn('number', ptype);
                }
              }

              for (var i = 0; i < tcd.length; i++) {

                var dn = 1 + i;
                designLabel = "Design " + dn;
                tcd[i].unshift(designLabel);
              }

              data.addRows(tcd);

              //var view = new google.visualization.DataView(data);

              var view = getDataView(data);
            console.log(data);
              chart = new google.visualization.BarChart(document.getElementById('chart_div'));
              chart.draw(view, globalOptions);
            }

            //get Data view

            function getDataView(dataTable) {
              var dataView;
              var viewColumns = [];
              var columnsTotal = dataTable.getNumberOfColumns();

              for (var i = 0; i < columnsTotal; i++) {
                addViewColumn(viewColumns, i);

                //add extra columns 
                if (i == columnsTotal) {
                  pushExtraCols(viewColumns);
                }

              }

              // set series for displaying total columns
              createSeries(columnsTotal) ;

              dataView = new google.visualization.DataView(dataTable);

              dataView.setColumns(viewColumns);

              return dataView;
            }

            function addViewColumn(viewColumns, index) {

              viewColumns.push(index);
              if (index > 0) {
                viewColumns.push({
                  calc: function (dt, row) {
                    console.log(row, index);
                    return dt.getValue(row, index);
                  },
                  role: 'annotation',
                  type: 'number'
                });
              }
            }

            function createSeries(columnsTotal) {
              var seriesT = columnsTotal -  1;
              console.log(seriesT);

              seriesObj = {
                [seriesT]: {
                  annotations: {
                    stem: {
                      color: "transparent",
                      length: 128
                    },
                    textStyle: {
                      color: "red",
                    }
                  },
                  enableInteractivity: false,
                  tooltip: "none",
                  visibleInLegend: false
                }
              }
              globalOptions.series = seriesObj;
            }

            function pushExtraCols(viewColumns) {
              viewColumns.push(
                {
                  calc: function (dt, row) {
                    return 0;
                  },
                  label: "Total",
                  type: "number",
                });

              viewColumns.push({
                calc: function (dt, row) {
                  return getTotal(dt, row);
                },
                type: "number",
                role: "annotation"
              });

            }

            //add up row total per column
            function getTotal(dt, row) {

              total = 0;

              for (var i = 0; i  < dt.getNumberOfColumns()-1; i++) {

                  total += dt.getValue(row, i);
                }

              console.log("total=" + total);
              return total;
            }
myDrawFunc(){
var data=new google.visualization.DataTable();
data.addColumn('string','Scenario');
对于(变量i=0;i0){
控制台日志(ptype);
//声明列
data.addColumn('number',ptype);
}
}
对于(变量i=0;i0){
viewColumns.push({
计算:函数(dt,行){
console.log(行、索引);
返回dt.getValue(行、索引);
},
角色:'注释',
键入:“数字”
});
}
}
函数createSeries(columnsTotal){
var seriesT=columnsTotal-1;
控制台日志(seriesT);
序列bj={
[严重]:{
注释:{
茎:{
颜色:“透明”,
长度:128
},
文本样式:{
颜色:“红色”,
}
},
EnableInteractive:false,
工具提示:“无”,
visibleInLegend:false
}
}
globalOptions.series=seriesObj;
}
函数pushExtraCols(视图列){
viewColumns.push(
{
计算:函数(dt,行){
返回0;
},
标签:“总计”,
键入:“数字”,
});
viewColumns.push({
计算:函数(dt,行){
返回getTotal(dt,row);
},
键入:“数字”,
角色:“注释”
});
}
//将每列的行总数相加
函数getTotal(dt,行){
总数=0;
对于(var i=0;i
尝试使用parseInt

total = parseInt(total) + dt.getValue(row, i)

检查此答案-->是的,我已经看到了,但无法将代码配置为动态工作。这只是添加几个视图列的问题,哪个部分会给您带来麻烦?而且,
getTotal
看起来不正确。您不需要循环行,因为您正在传递行索引,只有列…MMm更新了我的代码,以按示例链接推送列并添加动态序列,但仅获取堆叠值的注释。