我如何格式化谷歌图表数据,以显示项目的计数,但按年过滤
How do I format Google Chart data to show a count of items, but be filterable by year
希望这适合于stackexchange。如果没有,我道歉。
无论如何,我有一组数据,本质上是一个项目列表,与每个项目相关的人员以及项目开始的年份。我想做的是呈现一个条形图,显示每个人的项目总数,但以某种方式保留单个项目开始的年份,这样我就可以创建一个滑块过滤器。
写出来听起来很混乱。数据如下所示:
[
['Project','PM','Year'],
['PRJ0001','John Doe','2012'],
['PRJ0002','John Doe','2012'],
['PRJ0003','Jackie Johnson','2013'],
Etc, etc,
]
我按项目经理的名字创建计数没有问题,但是我"失去"了作为我可以过滤的度量标准的年份。有人有什么想法吗?
分别绘制每个控件
使用data.group
获取每个人的计数并绘制图表
用原始数据绘制滑块(需要更改NumberRangeFilter
的列类型)
重画滑块'statechange'
上的图表
使用滑块低/高值使用getFilteredRows
构建视图
请参阅下面的工作代码片段…
google.charts.load('current', {
callback: function () {
var data = google.visualization.arrayToDataTable([
['Project','PM','Year'],
['PRJ0001','John Doe',2012],
['PRJ0002','John Doe',2012],
['PRJ0003','John Doe',2012],
['PRJ0004','John Doe',2013],
['PRJ0005','Jackie Johnson',2012],
['PRJ0006','Jackie Johnson',2013],
['PRJ0007','Jackie Johnson',2014]
]);
var options = {
height: 400,
hAxis: {
viewWindow: {
min: 0,
max: 5
}
}
};
drawChart(data);
var slider = new google.visualization.ControlWrapper({
controlType: 'NumberRangeFilter',
containerId: 'filter_div',
dataTable: data,
options: {
filterColumnIndex: 2,
ui: {
format: {pattern: '0'}
}
}
});
google.visualization.events.addListener(slider, 'statechange', function () {
var range = slider.getState();
var view = new google.visualization.DataView(data);
view.setRows(data.getFilteredRows([{
column: 2,
minValue: range.lowValue,
maxValue: range.highValue
}]));
drawChart(view);
});
slider.draw();
function drawChart(dataTable) {
var dataGroup = google.visualization.data.group(
dataTable,
[1],
[{column: 1, aggregation: google.visualization.data.count, type: 'number', label: 'Count'}]
);
var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
chart.draw(dataGroup, options);
}
},
packages: ['controls', 'corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="filter_div"></div>
<div id="chart_div"></div>
相关文章:
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 限制在角度中过滤是否会阻止在 ng 重复中加载其他项目
- 观察角度过滤项目的变化
- 如何过滤推特流API订阅源,只获取与新闻相关的项目
- 使用 bxSlider 使用显示/隐藏过滤滑块项目
- jQuery在过滤后仅导航可见项目
- 角度按条件过滤数组中的多个项目
- 使用 .filter .map .some .indexOf 等过滤项目
- 角度.js分页过滤的数据并显示总项目,而无需在视图/控制器中复制代码
- Angular:过滤多个项目
- Jquery同位素过滤淡化不匹配的项目,而不是隐藏
- 使用同位素过滤后,当项目的宽度小于3时,请更改项目的宽度
- 使用下拉菜单反应过滤项目
- 用angular js过滤项目
- JavaScript | AngularJS:根据日期过滤结果过滤项目
- 过滤jQuery可排序的项目
- AppleScript JXA过滤表与许多行相同的名称,但不同的项目
- 我应该如何创建一个项目列表,过滤下拉项目选择在引导
- 我如何格式化谷歌图表数据,以显示项目的计数,但按年过滤
- 显示'没有项目'使用jQuery插件过滤列表项时的消息