【发布时间】:2022-01-12 17:26:51
【问题描述】:
我正在使用 ExtJS 构建一个 Web 应用程序,并且我有一个 Google 图表,它显示完成一项任务所需的天数以及这些天的计数。目的是轻松查看任务是否在合理的时间内完成,或者很多任务是否在更长的时间内完成。
我可以毫无问题地获取数据,并将原始数据转换为 Google Charts 可以使用函数处理的数据:
var output_data= "";
var output_data_array = [];
var data_count = data.length;
google.charts.load('current', {'packages':['corechart', 'bar']});
var header = "[\"Days\", \"Count\", { role: \"style\" } ],";
output_data_array.push(["Days, type: 'string'", "Count, type: 'number'", "{role: \"style\"}"]);
for(var i = 0 ; i < data_count ; i++){
var data_entry = data[i];
var number_of_days = data_entry.days;
var count = parseFloat(data_entry.count);
var color;
if(number_of_days < limit){
color = 'green';
}
else{
color = 'red';
}
output_data_array.push([number_of_days, count, color]);
}
var output_data_table = google.visualization.arrayToDataTable([
output_data_array
], false);
return output_data_table;
上面的函数生成我的数据数组,其中包含实际数据之前的数据头。我在下面这个函数中调用这个函数:
var graph_data = this.convertData_forGoogleCharts(analytics_data_array, 15);
google.charts.load('current', {'packages':['corechart', 'bar']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var view = new google.visualization.DataView(graph_data);
view.setColumns([0, 1,
{ calc: "stringify",
sourceColumn: 1,
type: "string",
role: "annotation" },
2]);
var options = {
title: "Test Chart",
width: width,
height: height,
bar: {groupWidth: "95%"},
legend: { position: "none" },
};
var chart = new google.visualization.ColumnChart(document.getElementById("myChartPanel"));
chart.draw(view, options);
}
但是,在我运行这个之后,我得到了以下错误:
Data column(s) for axis #0 cannot be of type string
这很奇怪,因为我在列标题中添加了 type 字段。我也不确定我是否可以在我的arrayToDataTable 中使用addColumn,就像使用DataTable 一样。
【问题讨论】:
标签: javascript charts google-visualization