For historical data in multiple dimensions.
One of the questions I heard frequently was, how do I see a bond trade in context, relative to its last trade -- whenever that was.
After getting this question a couple of times from a very well-known New York municipal bond dealer (you'd recognize his name instantly), we developed a straighforward listing of all the trades of a particular bond
This was fine as far as it went, but sometimes that was pretty far. The historical database of some really active bonds could go to thousands of trades, far too much to make any sense of as a mere listing.
The answer was a scatterplot graph
showing a given time period's activity. The basic math on how wide a space there was available narrowed it down to a five-month timeframe.
The entire script, written in Perl using the GD module, runs in a fraction of a second against the SQL database. A little longer if there are, oh, 10,000 trades to display; but still pretty quick. The fun part was, how much data could you really show? Referring to the popup window (click on the graph if you haven't already), obviously each dot in the left-hand graph represents a trade occurring on a day, at a price; and the vertical bars are the ranges. But some dots are darker, which indicates that more trades happened at that price point.
The right-hand graph represents trade price over volume. Different color dots here represent different kinds of trades; trades to customers, purchases from customers, and interdealer trades. One interesting side effect became apparent in this graph when very high numbers of trades were reported. Where one would expect a linear pattern of higher-volume trades going for lower prices, and vice-versa, instead a bell-curve pattern showed up. You can see a little of it developing here. This was a result no one expected.
When this was rolled out to run on the corporate bond listings, we noted that this is a much more institutional market (as opposed to individual investors) and so we decided it would be helpful to distinguish where the break points were for trade
volumes that represented individuals, and those that are institutional. So rather than an automatic volume scale as in the muni graph, I added a fixed scale (which also represented the reality that trades over $5MM are anonymous as far as the required reporting goes) with markers for $100K, and $1, $2, $3, $4 and $5MM. With that, it became very clear where the "even" and "odd" lots broke out, as well as the concentration of trades at the individual investor end of the spectrum.
Taking this to another level of abstraction, it demonstrates a way of graphing data with three or four different dimensions. In this case, the price and the date are two dimensions; the frequency at a given price point, and the volume of each, are the other two.
The same principle could be applied to, say, test scores. The first two dimensions could be the scores of students on standardized tests mapped against the expenditure per pupil of that student's school district. The third dimension would allow you to see overlapping scores, and in the right hand graph you could also map the score against some other demographic, such as household income.
Another application might be temperature readings over time, mapped against elevation against sea level. And so on.