I spent the past few weekends writing a parallel coordinates plot. For the uninitiated, parallel coordinates plots are used to show the relationships between items in a multidimensional dataset. Three dimensional data points can be difficult enough to visualize on a two dimensional screen, and when you throw even more dimensions into the problem, things just get nasty. Parallel coordinate plots mitigate this problem by rendering each of the n axes parallel to each other and each data point as a series of line segments corresponding to where the point would appear in n-dimensional space. So the point (3, 10, 7, 6) would be rendered like this:
Here’s a little example application using the period table of elements as a data source. If you’re interested in the details of the implementation you can check out the source.
When I started the project I was concerned that using the charting classes as a base would bulk up the code and ultimately hinder performance, so while the MXML that defines the plot is reminiscent of the charting components, the base is actually UIComponent. I’ve left plenty of room for extension in the classes that make up the plot. It’s licensed under MIT, so if you want a different renderer for each axis, you got it. If you want to draw loops instead of straight lines between the axes, go for it. I’m going to add the project to my repository, so if you’re interested in any updates that I make to the code, you can check there.
If you need variety, two of the other members of the Fervor team have started open source projects for their own flavors of PCP. (Swapping the acronym “PCP” in for “parallel coordinates plot” makes sentences more interesting, don’t you think?) PCPlot belongs to Dasha and contains the code more or less as it appeared in Fervor. FlexPC is a project Krist started with a couple of developers he met through a flexcoders post about PCP, but that project is still in the planning stage.