Visualize sorting algorithms using d3.js
While searching for JavaScript graphical libraries to create module dependency graphs, I found D3.js. Today, I created a simple sorting algorithm visualization using it.
Code demystify
var w = 300, h = 100, svg;
svg = d3.select("#graph")
.append("svg")
.attr("width", w)
.attr("height", h);
This creates a svg
using d3.js with width = 300
and height = 100
.
var rects = svg.selectAll("rect")
.data([10, 20])
.enter()
.append("rect");
To display bars in svg
will need rect
rectangles.
D3.js provides enter
, where you can create new nodes for incoming data ([10, 20]
).
At this step, these rects
are not assigned with information of its width, height and position yet.
rects.attr("x", function(d, i) { return i * 21; })
.attr("y", h)
.attr("width", 20)
.attr("height", function(d, i) { return d; })
Above lines will assign <x, y>
position and <width, height>
to each rect
.
d
is the data associated with the rects (10 for rects[0]
, 20 for rects[1]
) and
i
is the index of rect
in rects
.
To update the rects
, you will do the similar using new data and transition
:
function redraw(newData) {
var rects = svg.selectAll("rect")
.data(newData)
.transition()
.duration(1000) // 1s
// bind the x, y, width, height again
// ...
}
These are all the basic code required to display the bar chart.
You will then call redraw()
in algorithms at each step.