gpt4 book ai didi

javascript - 从 Google Charts 中的柱形图创建汇总表

转载 作者:行者123 更新时间:2023-11-28 03:10:26 24 4
gpt4 key购买 nike

我正在 Google Charts 中创建一个柱形图,并且还想创建一个表格图表,显示基于列值的摘要数据,即。平均值、最小值、最大值、总计。

我已在drawchart函数外部将它们声明为全局变量(初始化为0),并在drawchart函数内分配了值(不带var):

function drawPower() {
$.get("costs_daily.csv", function(csvString) {
// transform the CSV string into a 2-dimensional array
var arrayData = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});

// this new DataTable object holds all the data
var data = new google.visualization.arrayToDataTable(arrayData);

/// get min, max cost
var range = data.getColumnRange(3);
var n_rows = data.getNumberOfRows();

function getSum(data, row) {
var total = 0;
for (i = 0; i < n_rows; i++)
total = total + data.getValue(i, row);
return total;
}

totCost = getSum(data, 3);
aveCost = totCost / n_rows;
minCost = range.min;
maxCost = range.max;

var options = {
title: 'Costs for last 30 days',
titleTextStyle: {color: 'grey', fontSize: 16},
hAxis: {title: 'Date', titleTextStyle: {bold: false, italic: false, color: 'grey'}, slantedTextAngle: 90, textStyle: {fontSize: 12}},
legend: {position: 'top'},
vAxes: {
0: {title: 'Cost (p)', titleTextStyle: {bold: false, italic: false, color: 'grey'}},
},
focusTarget: 'category',
intervals: {color:'#000000',
textStyle: { color: 'none'}},
series: {
0: {color: '#44AA99', type: 'bars'},
1: {color: '#DDCC77', type: 'bars'},
2: {
color: 'transparent',
type: 'line',
lineWidth: 0,
pointSize: 0,
enableInteractivity: false,
visibleInLegend: false
}
},
interpolateNulls: true,
bar: { groupWidth: '75%' },
isStacked: true,
};

var formatter = new google.visualization.NumberFormat(
{prefix: '£', fractionDigits: 2}
);
formatter.format(data,1);
formatter.format(data,2);
formatter.format(data,3);

var chart = new google.visualization.ComboChart(document.getElementById('power_div'));

chart.draw(data, options);

},'text');

}

然后我创建了一个单独的函数来绘制包含这些值的表格:

function drawTable() {

statsData = [
['Stat', 'Cost'],
['Average', aveCost],
['Minimum', minCost],
['Maximum', maxCost],
['Total', totCost]
];

var stats = new google.visualization.arrayToDataTable(statsData);

var options = {
showRowNumber: false,
width: '100%',
height: '100%'
};

var formatter = new google.visualization.NumberFormat(
{prefix: '£', fractionDigits: 2}
);
formatter.format(stats,1);

var table = new google.visualization.Table(document.getElementById('table_div'));

table.draw(stats, options);

}

但这些值仍保持其初始值(零)。有没有办法将计算值从图表函数传递到表格函数?

最佳答案

不确定从现在开始在哪里调用 drawTable
但是,是的,您可以将图表函数中的值传递到表函数。

在图表函数中创建statsData
然后将其传递给表函数。
并删除当前正在调用表函数的位置。

      totCost = getSum(data, 3);
aveCost = totCost / n_rows;
minCost = range.min;
maxCost = range.max;

statsData = [
['Stat', 'Cost'],
['Average', aveCost],
['Minimum', minCost],
['Maximum', maxCost],
['Total', totCost]
];

drawTable(statsData);

...

function drawTable(statsData) {

...

请参阅以下代码片段...
函数绘制功率(){ $.get("costs_daily.csv", function(csvString) { //将 CSV 字符串转换为二维数组 var arrayData = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});

      // this new DataTable object holds all the data
var data = new google.visualization.arrayToDataTable(arrayData);

/// get min, max cost
var range = data.getColumnRange(3);
var n_rows = data.getNumberOfRows();

function getSum(data, row) {
var total = 0;
for (i = 0; i < n_rows; i++)
total = total + data.getValue(i, row);
return total;
}

totCost = getSum(data, 3);
aveCost = totCost / n_rows;
minCost = range.min;
maxCost = range.max;

statsData = [
['Stat', 'Cost'],
['Average', aveCost],
['Minimum', minCost],
['Maximum', maxCost],
['Total', totCost]
];

drawTable(statsData);


var options = {
title: 'Costs for last 30 days',
titleTextStyle: {color: 'grey', fontSize: 16},
hAxis: {title: 'Date', titleTextStyle: {bold: false, italic: false, color: 'grey'}, slantedTextAngle: 90, textStyle: {fontSize: 12}},
legend: {position: 'top'},
vAxes: {
0: {title: 'Cost (p)', titleTextStyle: {bold: false, italic: false, color: 'grey'}},
},
focusTarget: 'category',
intervals: {color:'#000000',
textStyle: { color: 'none'}},
series: {
0: {color: '#44AA99', type: 'bars'},
1: {color: '#DDCC77', type: 'bars'},
2: {
color: 'transparent',
type: 'line',
lineWidth: 0,
pointSize: 0,
enableInteractivity: false,
visibleInLegend: false
}
},
interpolateNulls: true,
bar: { groupWidth: '75%' },
isStacked: true,
};

var formatter = new google.visualization.NumberFormat(
{prefix: '£', fractionDigits: 2}
);
formatter.format(data,1);
formatter.format(data,2);
formatter.format(data,3);

var chart = new google.visualization.ComboChart(document.getElementById('power_div'));

chart.draw(data, options);

},'text');

}

function drawTable(statsData) {

var stats = new google.visualization.arrayToDataTable(statsData);

var options = {
showRowNumber: false,
width: '100%',
height: '100%'
};

var formatter = new google.visualization.NumberFormat(
{prefix: '£', fractionDigits: 2}
);
formatter.format(stats,1);

var table = new google.visualization.Table(document.getElementById('table_div'));

table.draw(stats, options);

}

关于javascript - 从 Google Charts 中的柱形图创建汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60178289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com