Charts Google图表arrayToDataTable格式的值不起作用

Charts Google图表arrayToDataTable格式的值不起作用,charts,formatting,google-visualization,Charts,Formatting,Google Visualization,下面是google图表文档,示例说明我可以使用格式化值,如下所示: var data = google.visualization.arrayToDataTable([ ['Employee Name', 'Salary'], ['Mike', {v:22500, f:'18,500'}], ... 其中f:'18500是要显示的格式化值。我的代码看起来一模一样: var data = google.visualization.arrayToDataTable([ ['Category', '

下面是google图表文档,示例说明我可以使用格式化值,如下所示:

var data = google.visualization.arrayToDataTable([
['Employee Name', 'Salary'],
['Mike', {v:22500, f:'18,500'}],
...
其中f:'18500是要显示的格式化值。我的代码看起来一模一样:

var data = google.visualization.arrayToDataTable([
['Category', 'Amount'],
['Food', {v:5595.819984, f:'5.595,82'}], 
['Home', {v:1890.530002, f:'1.890,53'}], 
['Mail', {v:8.380000, f:'8,38'}], 
['Train', {v:564.899998, f:'564,90'}], 
['Photo', {v:959.119995, f:'959,12'}], 
['Lego', {v:428.760004, f:'428,76'}], 
...
但图表甚至没有显示,崩溃了。如果我取出格式化的数据,它工作得很好。
我做错了什么?如何使用外观更好的版本在图表上显示值

正如安德鲁在评论中提到的,谷歌文档似乎就在这一点上撒谎

ArrayToDataTable()
在传入数组时效果很好。由于添加额外的格式会在数组中创建一个数组,所以Google似乎不喜欢它。如果要使用格式,应按如下方式手动添加数据

您的代码:

var data = google.visualization.arrayToDataTable([
['Category', 'Amount'],
['Food', {v:5595.819984, f:'5.595,82'}], 
['Home', {v:1890.530002, f:'1.890,53'}], 
['Mail', {v:8.380000, f:'8,38'}], 
['Train', {v:564.899998, f:'564,90'}], 
['Photo', {v:959.119995, f:'959,12'}], 
['Lego', {v:428.760004, f:'428,76'}], 
var data = google.visualization.DataTable();
data.addColumn('string', 'Category');
data.addColumn('number', 'Amount');
data.addRows([
['Food', {v:5595.819984, f:'5.595,82'}], 
['Home', {v:1890.530002, f:'1.890,53'}], 
['Mail', {v:8.380000, f:'8,38'}], 
['Train', {v:564.899998, f:'564,90'}], 
['Photo', {v:959.119995, f:'959,12'}], 
['Lego', {v:428.760004, f:'428,76'}],
]);
更新代码:

var data = google.visualization.arrayToDataTable([
['Category', 'Amount'],
['Food', {v:5595.819984, f:'5.595,82'}], 
['Home', {v:1890.530002, f:'1.890,53'}], 
['Mail', {v:8.380000, f:'8,38'}], 
['Train', {v:564.899998, f:'564,90'}], 
['Photo', {v:959.119995, f:'959,12'}], 
['Lego', {v:428.760004, f:'428,76'}], 
var data = google.visualization.DataTable();
data.addColumn('string', 'Category');
data.addColumn('number', 'Amount');
data.addRows([
['Food', {v:5595.819984, f:'5.595,82'}], 
['Home', {v:1890.530002, f:'1.890,53'}], 
['Mail', {v:8.380000, f:'8,38'}], 
['Train', {v:564.899998, f:'564,90'}], 
['Photo', {v:959.119995, f:'959,12'}], 
['Lego', {v:428.760004, f:'428,76'}],
]);

这不会使您的数据添加过于复杂,将以相同的结果结束,并将更好地处理格式化的值。

我也遇到了这个问题,但对手动添加数据并不满意。经过大量挖掘,我发现了“PatternFormat”方法:

这样,您仍然无法使用数组对象中的格式化模式来使用arrayToDataTable方法实例化表,但您可以只包含值,然后使用列上的PatternFormat方法修改为所需的输出

比如:

var data = google.visualization.arrayToDataTable([
 ['Category', 'Amount'],
 ['Food', 5595.819984], 
 ['Home', 1890.530002], 
 ['Mail', 8.380000], 
 ['Train', 564.899998], 
 ['Photo', 959.119995}], 
 ['Lego', 428.760004}]
], false); //must specify 'false' to indicate first set is column header data

var formatter = new google.visualization.NumberFormat(
{pattern:'####.##'}
);

formatter.format(data, 1); // Apply formatter to second column

我要警告的是,这种技术实际上并不适用于上述原始用例,因为没有为每一行寻求一致的格式。

您在他们的文档中引用的谷歌示例无法为我运行,它说“0,1中的值无效”。我复制粘贴了他们的例子。我认为他们的文档是不正确的Hello jmac,想知道为什么它不断提示我“无法读取未定义的属性'DataTable'”错误消息。