Charts 如何在google图表中显示总计
我想在列的末尾显示每个堆叠列的总计。 在下面的setColumns视图代码中,我无法计算出如何合计列。有人能帮我敲定吗 我希望在堆叠柱的末端达到如下所示的总数: [![在此处输入图像描述][1][1] 这是我到目前为止的代码,它适用于图表,但不完全适用于显示总标签Charts 如何在google图表中显示总计,charts,google-visualization,visualization,Charts,Google Visualization,Visualization,我想在列的末尾显示每个堆叠列的总计。 在下面的setColumns视图代码中,我无法计算出如何合计列。有人能帮我敲定吗 我希望在堆叠柱的末端达到如下所示的总数: [![在此处输入图像描述][1][1] 这是我到目前为止的代码,它适用于图表,但不完全适用于显示总标签 myDrawFunc(){ var data = new google.visualization.DataTable(); data.addColu
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更新了我的代码,以按示例链接推送列并添加动态序列,但仅获取堆叠值的注释。