Skip to content

Instantly share code, notes, and snippets.

@eesur
Created November 26, 2015 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eesur/8a7c005c05b09cebe8cf to your computer and use it in GitHub Desktop.
Save eesur/8a7c005c05b09cebe8cf to your computer and use it in GitHub Desktop.
d3 | draw to square grid

drawing to the grid using data. Styled gurmukhi script which translates to 'let go of worry; and be worry free'

      C H I N T A
      C H A D
    A C H I N T 
      R E H U

based of my initial sketch/block: d3 | simple square grid

var square = 30,
w = 900,
h = 1900;
// create the svg
var svg = d3.select('#grid').append('svg')
.attr({
width: w,
height: h
});
// calculate number of rows and columns
var squaresRow = _.round(w / square);
var squaresColumn = _.round(h / square);
// loop over number of columns
_.times(squaresColumn, function(n) {
// create each set of rows
var rows = svg.selectAll('rect' + ' .row-' + (n + 1))
.data(d3.range(squaresRow))
.enter().append('rect')
.attr({
class: function(d, i) {
return 'square row-' + (n + 1) + ' ' + 'col-' + (i + 1);
},
id: function(d, i) {
return 's-' + (n + 1) + (i + 1);
},
width: square,
height: square,
x: function(d, i) {
return i * square;
},
y: n * square,
fill: '#7AC143',
stroke: 'none' //'#333'
});
// test with some feedback
// var test = rows.on('mouseover', function (d, i) {
// d3.select('#grid-ref').text(function () {
// return 'r: ' + (n + 1) + ' | ' + 'c: ' + (i + 1);
// });
// });
});
// data for drawing
var data = [
{r: 2, c: 11},
{r: 2, c: 12},
{r: 2, c: 13},
{r: 5, c: 10},
{r: 5, c: 12},
{r: 5, c: 13},
{r: 5, c: 14},
{r: 5, c: 15},
{r: 5, c: 16},
{r: 5, c: 17},
{r: 5, c: 18},
{r: 5, c: 19},
{r: 5, c: 20},
{r: 5, c: 21},
{r: 5, c: 22},
{r: 2, c: 16},
{r: 2, c: 17},
{r: 2, c: 18},
{r: 3, c: 11},
{r: 3, c: 13},
{r: 9, c: 13},
{r: 10, c: 13},
{r: 11, c: 13},
{r: 12, c: 13},
{r: 13, c: 14},
{r: 14, c: 15},
{r: 14, c: 16},
{r: 13, c: 16},
{r: 12, c: 16},
{r: 11, c: 16},
{r: 10, c: 16},
{r: 9, c: 16},
{r: 8, c: 16},
{r: 7, c: 16},
{r: 6, c: 16},
{r: 9, c: 14},
{r: 9, c: 15},
{r: 9, c: 18},
{r: 9, c: 19},
{r: 9, c: 20},
{r: 9, c: 21},
{r: 14, c: 18},
{r: 14, c: 19},
{r: 14, c: 20},
{r: 14, c: 21},
{r: 14, c: 21},
{r: 13, c: 21},
{r: 12, c: 21},
{r: 11, c: 21},
{r: 10, c: 21},
{r: 9, c: 21},
{r: 8, c: 21},
{r: 7, c: 21},
{r: 6, c: 21},
{r: 5, c: 23},
{r: 5, c: 24},
{r: 6, c: 23},
{r: 7, c: 23},
{r: 8, c: 23},
{r: 3, c: 16},
{r: 3, c: 18},
{r: 4, c: 11},
{r: 5, c: 11},
{r: 6, c: 11},
{r: 7, c: 11},
{r: 8, c: 11},
{r: 9, c: 11},
{r: 10, c: 11},
{r: 11, c: 11},
{r: 12, c: 11},
{r: 13, c: 11},
{r: 14, c: 11},
{r: 17, c: 16},
{r: 17, c: 17},
{r: 17, c: 18},
{r: 18, c: 18},
{r: 18, c: 16},
{r: 19, c: 16},
{r: 20, c: 16},
{r: 20, c: 17},
{r: 20, c: 18},
{r: 20, c: 19},
{r: 20, c: 20},
{r: 20, c: 21},
{r: 20, c: 22},
{r: 21, c: 16},
{r: 22, c: 16},
{r: 23, c: 16},
{r: 24, c: 16},
{r: 25, c: 16},
{r: 26, c: 16},
{r: 27, c: 16},
{r: 28, c: 16},
{r: 29, c: 16},
{r: 20, c: 15},
{r: 20, c: 14},
{r: 20, c: 13},
{r: 20, c: 12},
{r: 20, c: 11},
{r: 20, c: 10},
{r: 21, c: 14},
{r: 22, c: 14},
{r: 23, c: 14},
{r: 24, c: 14},
{r: 26, c: 14},
{r: 27, c: 14},
{r: 28, c: 14},
{r: 29, c: 14},
{r: 24, c: 13},
{r: 24, c: 12},
{r: 24, c: 11},
{r: 25, c: 12},
{r: 26, c: 12},
{r: 26, c: 13},
{r: 29, c: 13},
{r: 29, c: 12},
{r: 29, c: 11},
{r: 28, c: 11},
{r: 27, c: 11},
{r: 24, c: 18},
{r: 24, c: 19},
{r: 24, c: 20},
{r: 24, c: 21},
{r: 21, c: 21},
{r: 22, c: 21},
{r: 23, c: 21},
{r: 25, c: 21},
{r: 26, c: 21},
{r: 27, c: 21},
{r: 28, c: 21},
{r: 29, c: 21},
{r: 29, c: 18},
{r: 29, c: 19},
{r: 29, c: 20},
{r: 27, c: 18},
{r: 27, c: 19},
{r: 32, c: 16},
{r: 33, c: 16},
{r: 32, c: 17},
{r: 32, c: 18},
{r: 33, c: 18},
{r: 33, c: 13},
{r: 32, c: 13},
{r: 32, c: 12},
{r: 32, c: 11},
{r: 33, c: 11},
{r: 34, c: 11},
{r: 35, c: 11},
{r: 35, c: 10},
{r: 35, c: 9},
{r: 35, c: 12},
{r: 36, c: 11},
{r: 36, c: 09},
{r: 37, c: 11},
{r: 38, c: 11},
{r: 39, c: 11},
{r: 40, c: 11},
{r: 41, c: 11},
{r: 42, c: 11},
{r: 43, c: 11},
{r: 44, c: 11},
{r: 37, c: 9},
{r: 38, c: 9},
{r: 39, c: 9},
{r: 40, c: 9},
{r: 41, c: 9},
{r: 42, c: 9},
{r: 43, c: 9},
{r: 44, c: 9},
{r: 35, c: 4},
{r: 35, c: 5},
{r: 36, c: 5},
{r: 37, c: 5},
{r: 38, c: 5},
{r: 39, c: 5},
{r: 40, c: 5},
{r: 35, c: 4},
{r: 36, c: 7},
{r: 37, c: 7},
{r: 38, c: 7},
{r: 39, c: 7},
{r: 40, c: 7},
{r: 41, c: 7},
{r: 42, c: 7},
{r: 35, c: 13},
{r: 35, c: 14},
{r: 35, c: 15},
{r: 35, c: 16},
{r: 35, c: 17},
{r: 35, c: 18},
{r: 35, c: 19},
{r: 35, c: 20},
{r: 35, c: 21},
{r: 35, c: 22},
{r: 36, c: 21},
{r: 37, c: 21},
{r: 38, c: 21},
{r: 39, c: 21},
{r: 40, c: 21},
{r: 41, c: 21},
{r: 42, c: 21},
{r: 43, c: 21},
{r: 44, c: 21},
{r: 39, c: 20},
{r: 39, c: 19},
{r: 39, c: 18},
{r: 44, c: 20},
{r: 44, c: 19},
{r: 44, c: 18},
{r: 36, c: 16},
{r: 37, c: 16},
{r: 38, c: 16},
{r: 39, c: 16},
{r: 40, c: 16},
{r: 41, c: 16},
{r: 42, c: 16},
{r: 43, c: 16},
{r: 44, c: 16},
{r: 44, c: 15},
{r: 39, c: 15},
{r: 39, c: 14},
{r: 39, c: 13},
{r: 43, c: 14},
{r: 41, c: 13},
{r: 42, c: 13},
{r: 40, c: 13},
{r: 46, c: 18},
{r: 46, c: 19},
{r: 46, c: 20},
{r: 46, c: 21},
{r: 50, c: 21},
{r: 50, c: 20},
{r: 50, c: 19},
{r: 50, c: 18},
{r: 50, c: 17},
{r: 50, c: 16},
{r: 50, c: 15},
{r: 50, c: 14},
{r: 50, c: 13},
{r: 50, c: 12},
{r: 50, c: 22},
{r: 51, c: 21},
{r: 50, c: 21},
{r: 52, c: 21},
{r: 53, c: 21},
{r: 54, c: 21},
{r: 55, c: 21},
{r: 56, c: 21},
{r: 57, c: 21},
{r: 58, c: 21},
{r: 59, c: 21},
{r: 59, c: 20},
{r: 59, c: 19},
{r: 59, c: 18},
{r: 58, c: 18},
{r: 57, c: 18},
{r: 56, c: 18},
{r: 55, c: 18},
{r: 54, c: 18},
{r: 54, c: 19},
{r: 61, c: 21},
{r: 61, c: 20},
{r: 61, c: 19},
{r: 61, c: 18},
{r: 51, c: 16},
{r: 52, c: 16},
{r: 53, c: 16},
{r: 54, c: 16},
{r: 55, c: 16},
{r: 56, c: 16},
{r: 57, c: 16},
{r: 58, c: 16},
{r: 59, c: 16},
{r: 54, c: 15},
{r: 54, c: 14},
{r: 54, c: 13},
{r: 55, c: 13},
{r: 56, c: 13},
{r: 57, c: 13},
{r: 59, c: 15},
{r: 58, c: 14}
];
// colour according to data
_.forEach(data, function(n, key) {
svg.select('.row-' + n.r + '.col-' + n.c)
.attr('fill', '#130C0E');
});
// custom accents (for squares outside the grid)
function accents(row, col) {
svg.append('rect')
.attr({
class: 'accent',
width: square,
height: square,
x: row,
y: col,
fill: '#130C0E',
stroke: 'none'
});
}
accents(345, 230);
accents(345, 780);
accents(345, 810);
accents(495, 810);
accents(555, 810);
accents(150, 1030);
accents(210, 1065);
accents(105, 1180);
accents(165, 1245);
accents(345, 1125);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>d3 | simple square grid to draw on</title>
<meta name="author" content="Sundar Singh | eesur.com">
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js" charset="utf-8"></script>
<!-- drawing to the grid using data. Styled gurmukhi script which translates to 'let go of worry; and be worry free'
```
C H I N T A
C H A D
A C H I N T
R E H U
```
based of my initial sketch/block: [d3 | simple square grid](http://bl.ocks.org/eesur/3fc83ddc4c060e6bd43e)
-->
<style type="text/css">
body{
background-color: #7AC143;
width: 960px;
margin: 20px auto;
}
/*#grid-ref {
position: fixed;
top: 20px;
left: 20px;
}*/
footer {
position: relative;
height: 80px;
width: 100%;
}
footer h4 {
position: absolute;
right: 20px;
bottom: 20px;
font-family: 'Andale Mono', 'Lucida Console', monospace;
font-weight: normal;
letter-spacing: 2px;
font-size: 13px;
text-transform: uppercase;
color: #EE3124;
}
</style>
</head>
<!-- <h4 id="grid-ref">roll-over grid</h4> -->
<section id='grid'></section>
<footer><h4>Guru Amar Das Ji | ang 597</h4></footer>
<!-- the grid base -->
<script src="d3_code_grid.js" charset="utf-8"></script>
<!-- the data -->
<script src="d3_code_grid_data.js" charset="utf-8"></script>
<!-- draw -->
<script src="d3_code_grid_draw.js" charset="utf-8"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment