Dashboard 谷歌柱形图仪表板
我有一个谷歌仪表板柱形图: 我的问题是如何对团队进行分组。例如,HAX应该只有一列是DOCOP,而利用率应该是所有DOCOP的总和 下面是我的代码:-Dashboard 谷歌柱形图仪表板,dashboard,google-visualization,Dashboard,Google Visualization,我有一个谷歌仪表板柱形图: 我的问题是如何对团队进行分组。例如,HAX应该只有一列是DOCOP,而利用率应该是所有DOCOP的总和 下面是我的代码:- <!--Load the AJAX API--> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="http:
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
// Load the Visualization API and the controls package.
google.load('visualization', '1.0', {'packages':['controls','corechart']});
// google.load('visualization', '1', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawDashboard);
// Callback that creates and populates a data table,
// instantiates a dashboard, a range slider and a pie chart,
// passes in the data and draws it.
function drawDashboard() {
// Create our data table.
var data = new google.visualization.DataTable(<?=$jsonTable?>);
var options = {
title: 'Utilization',
is3D: 'true',
width: 1000,
height: 600
};
var dashboard = new google.visualization.Dashboard(
document.getElementById('dashboard_div'));
var donutRangeSlider = new google.visualization.ControlWrapper({
'controlType': 'NumberRangeFilter',
'containerId': 'filter_div',
'options': {
'filterColumnLabel': 'Month'
}
});
var categoryPicker = new google.visualization.ControlWrapper({
controlType: 'CategoryFilter',
containerId: 'TeamName',
options: {
filterColumnLabel: 'Teams', // filter by Team name
ui: {
caption: 'Choose a Team',
sortValues: true,
allowNone: true,
allowMultiple: true,
allowTyping: true
}
}
});
var columnChart = new google.visualization.ChartWrapper({
'chartType': 'ColumnChart',
'containerId': 'chart_div',
'options': {
'width': 600,
'height': 400,
'legend': 'none',
'hAxis': {
'title': 'Teams',
'titleColor':'#cc0000',
'titleFontSize':20
},
'vAxis': {
'title': 'Utilization',
'titleColor':'#cc0000',
'titleFontSize':20
}
},
view:{
columns:['Group','Utilization']
}
});
/* var pieChart = new google.visualization.ChartWrapper({
'chartType': 'PieChart',
'containerId': 'pie_div',
'options': {
'width': 500,
'height': 300,
'pieSliceText': 'value',
'legend': 'right'
}
}); */
// Establish dependencies, declaring that 'filter' drives 'pieChart',
// so that the pie chart will only display entries that are let through
// given the chosen slider range.
dashboard.bind([donutRangeSlider, categoryPicker], [columnChart]);
dashboard.draw(data);
}
</script>
<body>
<!--Div that will hold the dashboard-->
<div id="dashboard_div">
<!--Divs that will hold each control and chart-->
<div id="filter_div"></div>
<div><br><br></div>
<div id="TeamName"></div>
<div id="chart_div"></div>
<div id="pie_div"></div>
</div>
</body>
//加载可视化API和控件包。
load('visualization','1.0',{'packages':['controls','corechart']});
//load('visualization','1',{'packages':['corechart']});
//将回调设置为在加载Google Visualization API时运行。
setOnLoadCallback(drawDashboard);
//创建并填充数据表的回调,
//实例化仪表板、范围滑块和饼图,
//传入数据并绘制它。
函数drawDashboard(){
//创建我们的数据表。
var data=new google.visualization.DataTable();
变量选项={
标题:“利用率”,
is3D:'正确',
宽度:1000,
身高:600
};
var dashboard=new google.visualization.dashboard(
document.getElementById('dashboard_div');
var donutRangeSlider=new google.visualization.ControlWrapper({
“controlType”:“NumberArrangeFilter”,
“containerId”:“filter_div”,
“选项”:{
“filterColumnLabel”:“月”
}
});
var categoryPicker=new google.visualization.ControlWrapper({
controlType:“CategoryFilter”,
containerId:'团队名称',
选项:{
filterColumnLabel:'团队',//按团队名称筛选
用户界面:{
描述:“选择一个团队”,
sortValues:没错,
阿隆:是的,
allowMultiple:对,
allowTyping:正确
}
}
});
var columnChart=new google.visualization.ChartWrapper({
“chartType”:“ColumnChart”,
“集装箱船”:“海图分区”,
“选项”:{
“宽度”:600,
‘高度’:400,
“图例”:“无”,
“哈克斯”:{
“标题”:“团队”,
“标题颜色”:“cc0000”,
“标题字体大小”:20
},
“vAxis”:{
“标题”:“利用率”,
“标题颜色”:“cc0000”,
“标题字体大小”:20
}
},
视图:{
列:[“组”、“利用率”]
}
});
/*var pieChart=new google.visualization.ChartWrapper({
'chartType':'PieChart',
“集装箱船”:“pie_div”,
“选项”:{
“宽度”:500,
‘高度’:300,
'文本':'值',
“图例”:“右”
}
}); */
//建立依赖关系,声明“筛选器”驱动“pieChart”,
//这样,饼图将只显示通过的条目
//给定选定的滑块范围。
dashboard.bind([donutRangeSlider,categoryPicker],[columnChart]);
仪表盘.绘图(数据);
}
我们有办法做到这一点吗?我不想修改json数据。某个参数或某个将HAX和团队名称分组的东西
提前谢谢
演示:-
您可以通过使用datatable进行分组来实现这一点。将以下侦听器添加到代码中,并添加dataTable:
google.visualization.events.addListener(categoryPicker, 'ready',
function(event) {
columnChart.setDataTable(google.visualization.data.group(
table.getDataTable(), [0], [{
'column': 5,
'aggregation': google.visualization.data.sum,
'type': 'number'
}]
));
columnChart.draw();
});
google.visualization.events.addListener(categoryPicker, 'statechange',
function(event) {
columnChart.setDataTable(google.visualization.data.group(
table.getDataTable(), [0], [{
'column': 5,
'aggregation': google.visualization.data.sum,
'typdpe': 'number'
}]
));
columnChart.draw();
});
}
还可以查看附加的滑块事件。由@Henrik创建
完整代码段:
//加载可视化API和控件包。
load('visualization','1.0',{'packages':['controls','corechart']});
//load('visualization','1',{'packages':['corechart']});
//将回调设置为在加载Google Visualization API时运行。
setOnLoadCallback(drawDashboard);
//创建并填充数据表的回调,
//实例化仪表板、范围滑块和饼图,
//传入数据并绘制它。
函数drawDashboard(){
//创建我们的数据表。
var data=new google.visualization.DataTable({“cols”:[{“label”:“Group”,“type”:“string”},{“label”:“Teams”,“type”:“string”},{“label”:“Month”,“type”:“number”},{“label”:“Work hours”,“type”:“Training hours”},{“type”:“number”},{“label”:“usage”;“use”,“type”;“number”},{“rows”:[{“c”:[{“v”:“v”:“CLNTSV{“v”:“v”:“CLNTSV”},,{“v”的“v”:“CLNTSV”的,{“v”的“v”:“CSPro”},,{“v”:4},,,{“v”:168},,,{“v”:0.0:0:0.0:0:0.0:0:0.949...0.0...................................................可能,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{“c“““““““““下列下列下列以下以下以下以下以下以下以下以下以下”c““““““““““““““““““{“v”:107},{“v”:1.02287},{“c”:[{“v”:“CLNTSV”},{“v”:“CSPro”},{“v”:7},{“v”:314.25},{“v”:23},{“v”:0.900775},{“c”:[{“v”:{“v”:2552.46},{“v”:878.42},,{“v”:878.42},,{“v”:0.81.42},,{“v”:0.815323}},,,,{,“c”c“““““““““““““““““,,[c“““““““““““[v”:”以下以下以下以下以下简称““““““““::”CSCSSPSPP”CSSPP““,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"v:0.951064},{"c:[{"v:"CLNTSV},{"v:"Docstars},{"v:5},{"v:1404.41},{"v:192.51},{"v:0.988193}“v”:6.7,{“v”:1421.97},,,{“v”:14.9.97},,{“v”:183.93},,{“v”:183.93},,{“v:0.979.979.927}},,,,,,,,,,{“c”c““““““,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{“v”:0.867859},{“c”:[{“v”:“CLNTSV”},{“v”:“JPMC”},{“v”:5},{“v”:2560.9},{“v”:1397.62},{“v”:0.885179}{“c”c“““{“v”:“CLNTSV”的“{”v“““““““““““““““““““”v““““““““”v““““:”CLNTSV”的”c“,,,{”v““““““““““““““,,{”v“:6.5.5”7 7,,,{“v”:3248.3248.58.59},,,,,,,,,{“v““““““:1931.5.5.5.5.5.5.85},,,,,,,,,,,,,,,,,,,,,,,,,,,{”1931.85.85,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{“0.5”0.0.0.0.0.85{“v”:0.862475},{“c”:[{“v”:“CLNTSV”},{“v”:“XFT”},{“v”:5},{“v”:1890.48},{“v”:69},{“v”:0.971964},{“c”:[{“v”:”CLNTSV“},{“v”:“XFT”},{“v”:6},{“v”:2083.39},{“v”: