Skip to content

Instantly share code, notes, and snippets.

@vikrammirla
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save vikrammirla/ca398d781b81af8c1104 to your computer and use it in GitHub Desktop.

Select an option

Save vikrammirla/ca398d781b81af8c1104 to your computer and use it in GitHub Desktop.
d3grid
{"description":"d3grid","endpoint":"","display":"svg","public":true,"require":[{"name":"d3grid","url":"https://rawgit.com//interactivethings/d3-grid/master/d3-grid.js"}],"fileconfigs":{"inlet.js":{"default":true,"vim":false,"emacs":false,"fontSize":12},"_.md":{"default":true,"vim":false,"emacs":false,"fontSize":12},"config.json":{"default":true,"vim":false,"emacs":false,"fontSize":12},"d3Grid":{"default":true,"vim":false,"emacs":false,"fontSize":12}},"fullscreen":false,"play":false,"loop":false,"restart":false,"autoinit":true,"pause":true,"loop_type":"pingpong","bv":false,"nclones":15,"clone_opacity":0.4,"duration":3000,"ease":"linear","dt":0.01,"ajax-caching":true,"inline-console":true,"thumbnail":"http://i.imgur.com/BS2y5d9.png"}
(function() {
d3.layout.grid = function() {
var mode = "equal",
layout = _distributeEqually,
x = d3.scale.ordinal(),
y = d3.scale.ordinal(),
size = [1, 1],
actualSize = [0, 0],
nodeSize = false,
bands = false,
padding = [0, 0],
cols, rows;
function grid(nodes) {
return layout(nodes);
}
function _distributeEqually(nodes) {
var i = -1,
n = nodes.length,
_cols = cols ? cols : 0,
_rows = rows ? rows : 0,
col, row;
if (_rows && !_cols) {
_cols = Math.ceil(n / _rows)
} else {
_cols || (_cols = Math.ceil(Math.sqrt(n)));
_rows || (_rows = Math.ceil(n / _cols));
}
if (nodeSize) {
x.domain(d3.range(_cols)).range(d3.range(0, (size[0] + padding[0]) * _cols, size[0] + padding[0]));
y.domain(d3.range(_rows)).range(d3.range(0, (size[1] + padding[1]) * _rows, size[1] + padding[1]));
actualSize[0] = bands ? x(_cols - 1) + size[0] : x(_cols - 1);
actualSize[1] = bands ? y(_rows - 1) + size[1] : y(_rows - 1);
} else if (bands) {
x.domain(d3.range(_cols)).rangeBands([0, size[0]], padding[0], 0);
y.domain(d3.range(_rows)).rangeBands([0, size[1]], padding[1], 0);
actualSize[0] = x.rangeBand();
actualSize[1] = y.rangeBand();
} else {
x.domain(d3.range(_cols)).rangePoints([0, size[0]]);
y.domain(d3.range(_rows)).rangePoints([0, size[1]]);
actualSize[0] = x(1);
actualSize[1] = y(1);
}
while (++i < n) {
col = i % _cols;
row = Math.floor(i / _cols);
nodes[i].x = x(col);
nodes[i].y = y(row);
}
return nodes;
}
grid.size = function(value) {
if (!arguments.length) return nodeSize ? actualSize : size;
actualSize = [0, 0];
nodeSize = (size = value) == null;
return grid;
}
grid.nodeSize = function(value) {
if (!arguments.length) return nodeSize ? size : actualSize;
actualSize = [0, 0];
nodeSize = (size = value) != null;
return grid;
}
grid.rows = function(value) {
if (!arguments.length) return rows;
rows = value;
return grid;
}
grid.cols = function(value) {
if (!arguments.length) return cols;
cols = value;
return grid;
}
grid.bands = function() {
bands = true;
return grid;
}
grid.points = function() {
bands = false;
return grid;
}
grid.padding = function(value) {
if (!arguments.length) return padding;
padding = value;
return grid;
}
return grid;
};
})();
var points = [1,2,3,4,5];
var rects = [];
var width = 960,
height = 500;
console.log(width)
var pointGrid = d3.layout.grid()
.points()
.size([360, 360]);
console.log(pointGrid(points))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment