遍历D3中所有数据点之间的所有值
Going through all values between all points of data in D3
我有数据。比方说:
date,comments
19-Apr-2016,Today was great.
21-Apr-2016,Today was not so great.
1-May-2016,Interesting things happened!
(所有日期都被解析为日期)
我想浏览2016年4月19日至2016年5月1日的每一天,为每一天制作一个元素,然后在存在的地方注入相关数据。例如:
19-Apr-2016 - Today was great.
20-Apr-2016 - <No entry>
21-Apr-2016 - Today was not so great.
22-Apr-2016 - <No entry>
...
1-May-2016 - Interesting things happened!
这是当前代码。它执行前者,并为每个数据点创建一个元素:
preview.selectAll("svg")
.append("g")
.data(sums)
.enter()
.append("rect")
// Drawing code etc. Setting height, class, color, w/e
无论是否有数据,我如何在所有日子里循环?
下面是我将如何处理这个问题的伪代码。
假设你的sums对象是一个数组,它存储你表示的数据
19-Apr-2016 - Today was great.
20-Apr-2016 - <No entry>
21-Apr-2016 - Today was not so great.
22-Apr-2016 - <No entry>
...
1-May-2016 - Interesting things happened!
现在,在我绘图的功能中,我会喜欢这个
var start = new Date(2016, 3, 19);//19-Apr-2016
var end = new Date(2016, 4, 1);//1-May-2016
for (var d = start; d <= end; d.setDate(d.getDate() + 1)) {
//for each date append a group
var grp = preview.selectAll("svg").append("g")
var myData = //get the data from sums array for which the date is d(in iterator)
if(myData){
grp.append("rect").style("stroke", 1) ...
}else {
//date not in the sums array.
}
}
希望这能有所帮助!
D3的内置nest
可能是实现这一点的最简单方法。
不要直接绑定sums
。首先用nest
按日期对数据进行分组,然后根据该分组绘制图表。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 在控制器和数据对象之间同步数据
- 使用服务(AngularJS)在控制器之间共享数据
- AngularJS中的页面之间共享数据返回空
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- Mongoose查询在两个日期时间之间提取数据
- 使用Angularjs在两个不同页面的控制器之间共享数据
- 使用JavaScript在网页之间进行数据传输
- 如何在网页之间存储数据
- 如何在Windows Phone 8.1应用程序中在C#和Javascript之间传递数据或通信
- 2ng控制器,并且需要在控制器之间共享数据
- 在控制器angular js之间共享数据
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 基本html页面和弹出窗口之间的数据交换
- Meteor-在助手、事件和模板之间传递数据
- 如何在 Angularjs 中的交叉模块之间共享数据
- 在OnsenUI+AngularJS+PhoneGap中的控制器之间传递数据
- 最小化在javascript中客户端/服务器之间发送的数据
- 如果我在页面之间移动,Jquery 数据表行事件会卡住
- JavaScript:显示客户端和服务器之间数据传输的度量