Skip to content

Instantly share code, notes, and snippets.

@jamesleesaunders
Last active September 23, 2017 22:37
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 jamesleesaunders/260cf482c8a56d49dfa6 to your computer and use it in GitHub Desktop.
Save jamesleesaunders/260cf482c8a56d49dfa6 to your computer and use it in GitHub Desktop.
D3 : Random Number Generation - Column Chart

Random Number Generation - Column Chart

In this simple D3 example we demonstrate 3 possible methods to generate a dataset of random numbers.

  • Manual Random Number Generation. This is not really random number generation code but more a demonstration of the structure of the data array which is to be produced.
  • JavaScript Random Number Generation. Using a traditional JavaScript for loop and Math.random() function to generate the data array of random numbers.
  • D3 Random Number Generation. Using D3's built range / map functions to build the array.

For a laugh, the code then proceeds to concatinate the 3 random datasets into a single array and displays a simple column chart of the numbers.

<!DOCTYPE html>
<html>
<head>
<title>D3 : Random Number Generation - Column Chart</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" charset="utf-8"></script>
<style type="text/css">
#chartholder {
height: 400px;
width: 600px;
}
.bar {
display: inline-block;
width: 15px;
height: 10px; /* Gets overridden by D3 height below */
margin-right: 2px;
background-color: teal;
}
</style>
</head>
<body>
<div id="chartholder"></div>
<script type="text/javascript">
// Random Dataset Method 1 (Manual Random Number Generation)
var data1 = [0.27, 0.5, 0.1, 0.15, 0.3, 0.21, 0.25, 0.94, 0.04, 1.00];
// Random Dataset Method 2 (JavaScript Random Number Generation)
var data2 = [];
for (var i = 0; i < 10; i++) {
var newNumber = Math.random();
data2.push(newNumber);
}
// Random Dataset Method 3 (D3 Random Number Generation)
var data3 = d3.range(10).map(function() {
return Math.random();
});
// Concatinate the 3 Random Datasets
var data = data1.concat(data2, data2);
console.log(data);
// Display a simple Column Chart using the above Random Data
var svg = d3.select('#chartholder').selectAll('div')
.data(data)
.enter()
.append('div')
.attr('class', 'bar')
.style('height', function (d) {
return d * 400 + 'px';
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment