Interactive visualizations usually refer to a suite of techniques for cycling through various views on a data set in an effort to discover or present relationships in the data. This always seemed a bit on the passive side to me. It starts with the user prodding their software to coax out some sort of visualization, perhaps to answer a “what if” type of question, evaluating it, then (maybe) using for inspiration to move to a new “what if” scenario.
But “what if” the data could actually push back and say, “hey, look at it this way”? What if the discovery process was computer augmented rather than computer supported? It might lead to genuine insight that a human alone is not capable of.
I came by this notion a few years ago while playing with the concept of an interactive mind map. While I find the idea of mind maps intriguing, they always seemed overly constrained. I put together a toy application about two or three years ago to explore some of the idea of interactive data.
I recently revisited this topic with a friend, cleaned up the Bitbucket repository where I host it, and thought I would write it up here.
It works like this, users start by dropping boxes onto a canvas that represent concepts. They can draw links between concepts, and the length of the connection represents the strength of the association. The shorter the link the stronger the association. Once there is at least one link on the canvas is where things start to get interesting.
Rather than having a static layout the canvas has a force reduction layout algorithm that rearranges the boxes in an effort to minimize the stress on all of the links. What the user sees is a continuously drifting cloud of concepts trying to move to some sort of minimal stress configuration. Users can use the mouse to interact with the map at any time, moving concepts around to tweak the configuration as the algorithm continues to push it to equilibrium. I used to introduce it to people as “a mind map that fights back”.
If you’re a fan a mind maps you’ll probably notice it’s not really a mind map, I introduce it that way because it I find more people are familiar with the idea of a mind map. Its actually closer to a cognitive map, although the role of links has been slightly perverted.
As with a lot of my more experimental projects there was a mish-mash of other ideas of I wanted to play with. The application includes support for simple splitting and merging of concepts inspired by Hofstadter’s writings on fluid concepts. I also tried to make the user interface discoverable. Most functionality is “discovered” with the mouse by pushing and prodding on the controls or on the concepts displayed on the canvas. There are some important context menus that come up with the right mouse button that are little less obvious than I like, but overall I’m pretty happy with it.
That’s not to say it’s a great, or even a good application. But I enjoyed the insights that came form actually putting the concepts into code. If you’d like to take a look or give a try you can download it from it’s Bitbucket repository. I’d love to hear what people think.