创建过去365天的日历网格
Create a calendar grid of the last 365 days
我现在正在学习d3.js,我想创建一个类似于github公共贡献图的日历视图。
我使用这个d3.js日历视图作为我的起点。
我遇到的问题是试图创建一个过去365天的网格。我创造了一把小提琴:http://jsfiddle.net/fcR4Q/1/我被困的地方。目前,它只创建了一年365个盒子。
我想我需要更改以下行:
var svg = d3.select(".sales").selectAll("svg")
.data(d3.range(2012, 2013))
...
return d3.time.days(new Date(d, 0, 1), new Date(d + 1, 0, 1));
我尝试过各种方法,但都没有奏效。有人能给我指个正确的方向吗。
首先,在为上一个年份设置年份时,您正在修改原始年份(today
)。你的代码应该是这样的:
var today = new Date(),
lastyear = new Date();
lastyear.setFullYear(lastyear.getFullYear() - 1);
实际上,您不再需要嵌套选择,因为您只有一年的时间。因此,对于SVG,您只需要执行
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.attr("class", "RdYlGn")
.append("g")
.attr("transform",
"translate(" + ((width - cellSize * 53) / 2) + "," + (height - cellSize * 7 - 1) + ")");
最后,要计算单元格的位置,不再重要的是日期/周(因为你想要连续的单元格),而是索引:
.attr("x", function(d, i) { return Math.floor(i / 7) * cellSize; })
.attr("y", function(d, i) { return i % 7 * cellSize; })
在这里完成jsfiddle。
相关文章:
- 剑道网格jQuery动画()问题
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- JavaScript打印功能使日历停止工作
- 我可以更改剑道UI网格吗's的外键值
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- jqGrid树网格问题
- 在Three.js中导出网格会提高性能吗
- 如何在剑道网格初始化后设置pageSizes
- 在threejs中使用纹理网格和线框网格
- primefaces日历可以禁用过去的日期和时间吗
- 如何在可分组的剑道网格中设置空数据文本
- 如何在Angular UI网格中选择下一行
- ExtJS网格单元格编辑器,防止焦点松动问题
- 多维数据集网格未在指定的分区中绘制
- 光线投射从内部投射时不会碰到网格
- 使用javascript在MVC中查找网格长度时出错
- 创建过去365天的日历网格
- 禁用剑道网格日历中的星期几
- DHTMLX日历隐藏DHTMLX网格
- 在可编辑网格中添加日历控件