Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在google.visualization.data.group中包含字符串列_Javascript_Charts_Google Visualization - Fatal编程技术网

Javascript 在google.visualization.data.group中包含字符串列

Javascript 在google.visualization.data.group中包含字符串列,javascript,charts,google-visualization,Javascript,Charts,Google Visualization,我有一张桌子基本上是这样的: {"cols":[ {"label":"Date","type":"date"}, {"label":"Person","type":"string"}, {"label":"Amount","type":"number"}], "rows":[ {"c":[{"v":"Date(2018, 1, 01)"},{"v":"John"},{"v":1.28}]}, {"c":[{"v":"Date(2018, 1, 01)"},

我有一张桌子基本上是这样的:

{"cols":[
    {"label":"Date","type":"date"},
    {"label":"Person","type":"string"},
    {"label":"Amount","type":"number"}],
"rows":[
    {"c":[{"v":"Date(2018, 1, 01)"},{"v":"John"},{"v":1.28}]},
    {"c":[{"v":"Date(2018, 1, 01)"},{"v":"Mary"},{"v":6}]},
    {"c":[{"v":"Date(2018, 1, 01)"},{"v":"John"},{"v":9.31}],
    {"c":[{"v":"Date(2018, 1, 01)"},{"v":"Richard"},{"v":3.5}]},
    {"c":[{"v":"Date(2018, 2, 01)"},{"v":"Mary"},{"v":48.99}]},
    {"c":[{"v":"Date(2018, 2, 01)"},{"v":"Richard"},{"v":29.95}]},
    {"c":[{"v":"Date(2018, 2, 01)"},{"v":"John"},{"v":18}]},
    etc...
]}
我想将数据显示为堆叠面积图。日期将在x轴上,金额将在y轴上,类别将是人员

以下是我对数据进行分组的尝试:

var data = new google.visualization.data.group(
    data,
    [0],
    [{'column': 1, 'aggregation': ?, 'type': 'string'}],
    [{'column': 2, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
);
我的问题是,我不知道列1的“聚合”应该放什么。我不能使用'sum',因为它是一个字符串,而且,它会抛出错误“给定轴上的所有系列必须具有相同的数据类型”

我试过这个:

var data = new google.visualization.data.group(
    data,
    [0,1],
    [{'column': 2, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
);
但这也会引发错误“给定轴上的所有系列必须具有相同的数据类型”

如果我省略了第1列altogther,那么图表可以工作,但是没有堆叠。所有人的数据只是集中在一起

var data = new google.visualization.data.group(
    data,
    [0],
    [{'column': 2, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
);

为了让每个人都有独立的堆栈,
每个人都需要自己的数据表列或序列

要转换给定的数据表,
按日期和人员划分的第一组。
然后为每个人创建一个单独列的数据视图,
最后,按日期对所有列进行分组和求和

请参阅以下工作片段,
该表显示了所需的布局

google.charts.load('current'{
包:['corechart','table']
}).然后(函数(){
//创建数据表
var data=new google.visualization.DataTable({
“科尔斯”:[
{“标签”:“日期”,“类型”:“日期”},
{“label”:“Person”,“type”:“string”},
{“标签”:“金额”,“类型”:“编号”}
],
“行”:[
{“c”:[{“v”:“日期(2018年1月1日)”},{“v”:“约翰”},{“v”:1.28}]},
{“c”:[{“v”:“日期(2018年1月1日)”},{“v”:“其他”},{“v”:6}]},
{“c”:[{“v”:“日期(2018年1月1日)”},{“v”:“约翰”},{“v”:9.31}]},
{“c”:[{“v”:“日期(2018年1月1日)”},{“v”:“儿童”},{“v”:3.5}]},
{“c”:[{“v”:“日期(2018年2月1日)”},{“v”:“玛丽”},{“v”:48.99}]},
{“c”:[{“v”:“日期(2018年2月1日)”},{“v”:“理查德”},{“v”:29.95}]},
{“c”:[{“v”:“日期(2018年2月1日)”},{“v”:“约翰”},{“v”:18}]},
{“c”:[{“v”:“日期(2018年2月1日)”},{“v”:“其他”},{“v”:6}]},
{“c”:[{“v”:“日期(2018年3月1日)”},{“v”:“儿童”},{“v”:3.5}]},
{“c”:[{“v”:“日期(2018年3月1日)”},{“v”:“玛丽”},{“v”:48.99}]},
{“c”:[{“v”:“日期(2018年3月1日)”},{“v”:“Richard”},{“v”:29.95}]},
{“c”:[{“v”:“日期(2018年3月1日)”},{“v”:“约翰”},{“v”:18}]}
]
});
//组数据表
var groupData=google.visualization.data.group(
数据,
[0, 1],
[{
专栏:2,
聚合:google.visualization.data.sum,
键入:“数字”
}]
);
//创建数据视图
var view=newgoogle.visualization.DataView(groupData);
//和列数组
var aggColumns=[];
//将日期用作第一个视图列
var viewColumns=[0];
//为每个人生成视图和agg列(&A)
groupData.getDistinctValues(1).forEach(函数(性别,索引){
//为每个人添加视图列
viewColumns.push({
计算:函数(dt,行){
如果(dt.getValue(第1行)==性别){
返回dt.getValue(第2行);
}
返回null;
},
标签:性别,
键入:“数字”
});
//为每个人添加“总和”列
推({
聚合:google.visualization.data.sum,
列:索引+1,
标签:性别,
键入:“数字”
});
});
//设置视图列
view.setColumns(viewColumns);
//按日期汇总视图
var aggData=google.visualization.data.group(
看法
[0],
聚合柱
);
//绘制图表
var chart=new google.visualization.AreaChart(document.getElementById('chart_div'));
图表、绘图(数据、{
伊斯塔克德:是的
});
//画图台
var table=新的google.visualization.table(document.getElementById('table_div');
表.绘图(数据);
});
.dashboard{
文本对齐:居中;
}
.仪表板部{
边缘底部:12px;
}