Ask HN: Any good books on graphing/charting/visualization?
My day job has me working on a project that has vast amounts of data available in tabular form, but no way to analyze the data except to search it and display it in more tables. Pages and pages of tables.
I'd love to build a way to query the data and display the results visually, and I'm looking for books that demonstrate various techniques for visualizing data that (in many cases) is quite complex. Right now, my experience doesn't really extend beyond basic pie/bar/scatter graphs.
I've heard amazing things about Tufte, but looking at the previews of his books on Amazon they seem mostly focused on artistic presentations of information - something a marketer or analyst would create manually, not dynamic charts generated from terabytes of data. Is that the case? Does it still have useful information for the sort of thing I'm doing, or can anyone recommend something more suitable?
39 comments
[ 2.8 ms ] story [ 110 ms ] threadAlso, I enjoy this site http://flowingdata.com.
He provides examples of good and bad graphs, but more importantly, explains what exactly it is that makes those examples good and bad, and further generalizes it so you understand how to make good visualizations. If you don't want to shell out the money for it, it's probably at your library (remember those?).
Additionally, if I were you, I'd stay way from statistical approaches to displaying information unless you have some background or are willing to learn about it -- it tends to be highly technical and is probably too complex for what you're trying to do. Basic stats might help you, but not as much as Tufte will.
Agreed, its absolutely excellent. Thanks to Y Combinator for listing it in the book list.
> Additionally, if I were you, I'd stay way from statistical approaches to displaying information...
Not agreed. In my opinion you might have missed what I felt was a main point of that book: Always learn the appropriate statistics required to understand the data, choose a correct visualization method to communicate those statistics effectively, and once you've understood it fully, confirmed the results, and removed all the cruft, then publish it.
Of course, if it's worth it to invest the time required to have a fundamental understanding of statistics, by all means do so -- but if this is a one-time or a short-term project, I'm not sure the time commitment is worth it.
maximize the data/ink ratio - figure out how to show more data with fewer lines, symbols, colors
Clarify by adding data - show the broad trend but allow a viewer to drill down into specific areas of interest
Here is a good example of both points, 2200 data points coherently graphed: http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0...
I would add that his one day course is a great way to get started reading his books (especially if you can get your employer to pay for it). He's a great speaker and you get all the books as part of the course. I wish all the makers of charting libraries, toolkits, and data analysis software were more familiar with his work. It would save us from some truly awful junk.
One area where I disagree with him frequently is when he strays from data visualization into user interface design. In general, I find his user interface preferences result in UI's that are too cluttered. One of his main rules is that data presentations should be very dense. However, I disagree that this approach works as well for user interfaces as it does when visualizing data. If you look at his web site (http://www.edwardtufte.com/) you can see his UI philosophy on display. I find Don Norman to be much better in this area than Tufte.
Readings in Information Visualization ( http://www.amazon.co.uk/Readings-Information-Visualization-I... ) is a collection of papers covering a wide range of techniques for a wide range of tasks.
Apart from that, it's mostly a matter of picking up interesting ideas wherever you find them. flowingdata.com is nice, same with http://www.informationisbeautiful.net/
Once you read these, you will start seeing 'Data Ducks' everywhere! I speak from experience.
http://www.processing.org/
And look at the examples section.
A lot of it is about artistic sorts of representation, but it is programmatic. There are a few books that the authors of the language wrote, including the visualizing data book mentioned by duck. (They are mentioned on the front page of processing.org).
It is a pretty neat language, and the core functionality can be used as a Java library. (I have been working through the 'processing a programming handbook', and it is more about using the language than about ways to display the data (So you might want to pick one of the other books)).
If you are looking for a smaller book I've found the WSJ Guide to Information Graphics by Dona Wong to be pretty decent and pretty straight forward, and it's about 100 pages. It's not too focused on finance either, although that's what I got it for (I do front end development for financial analysis company - lots of charting).
http://www.amazon.com/Street-Journal-Guide-Information-Graph...
But for your situation, check out some of these sites which focus on more complicated graphing techniques:
http://www.perceptualedge.com/examples.php
http://blogof.francescomugnai.com/2009/04/50-great-examples-...
http://interface.fh-potsdam.de/infodesignpatterns/news.php
http://patternbrowser.org/
http://webdesignledger.com/inspiration/15-stunning-examples-...
http://www.tableausoftware.com/public/
Another fun fact: when he couldn't get his first book (VDQI) published the way he wanted, he mortgaged his house and published it himself. Respect.
He even brought out his iPhone & iPad and commented on the easily-navigated UI.
Normal registration was $380 per person, albeit ft students received a $180 discount.
I half-expected him to show some of Randall Munroe's hi-res graphics (such as http://xkcd.com/657/), but alas, it would have been too perfect =)
Also, look at Ben Fry's Processing books (http://benfry.com/). Here's an introductory tutorial - http://blog.blprnt.com/blog/blprnt/your-random-numbers-getti...).
If you're familiar with Python, check out Matplotlib (https://www.packtpub.com/matplotlib-python-development/book).
That said, Incanter is immature compared to R. If Incanter does what you need, it might be a great fit, but R has a huge community and list of libraries right now. There's an R to Clojure bridge, but if you don't yet know R I'm not sure it's very helpful.
Finally, Incanter is developing at a break-neck pace. Even if it doesn't do what you want today, it might tomorrow. Literally. I'd love to see the user base grow, because Clojure seems like a perfect fit for statistical computing.
I've done this on occasion and with success. When it fits, animation works wonders. And when it doesn't, look for "duck" in Tufte.
But, I did use some really good tools. I highly recommend using Prefuse (yes, it's java but it ships with great examples and it's open source). If you like prefuse, then try flare (actionscript based). As far I know, prefuse supports querying from tables (my data backend was postgres). Here's prefuse: http://prefuse.org/ Here's flare:http://flare.prefuse.org/
And for a dash of inspiration and more ideas: http://www.visualcomplexity.com/vc/
Books: http://www.cs171.org/syllabus.html
Resources http://www.cs171.org/resources.html
I have been delving in this area for the past couple months, and even though I am still learning, I will give my practical suggestions to the programmer:
1) First accept that there is no silver bullet to data visualization. You pick the tool that makes the most sense. Sometimes you have to write a Java program, sometimes a Python program, and yes, even sometimes an Excel spreadsheet. Don't be picky--just get it done.
2) Programmatically speaking, there are ways to represent truly massive terabyte datasets.
- You can learn Processing (used by Ben Fry in Visualizing Data) which is based on Java and pretty simple to learn. My caveat is that you can't run these scripts server-side, that is, it doesn't generate jpgs or pngs on demand due to headless mode constraints.
- You can use Beautiful Soup in Python to easily modify XML data for SVG graphics. Check out this: http://flowingdata.com/2009/11/12/how-to-make-a-us-county-th...
- You can learn Java's image library (I haven't done this so I can't really give any advice, but this is what Processing simplifies I think)
- You can use Excel to easily pump out bar/pie/line graphs
- You can use the Google Chart API
- You can use Flash. Check out AmCharts for that Mint-y goodness.
3) Learn statistics. Browse the Netflix Prize forums. Struggle with MatLab or R or Octave. You need to learn how to efficiently handle large datasets in memory to better sift through the essential information you need. For very very large sets that absolutely cannot be handled in memory, you'll want to check out Hadoop + MapReduce. Check out Cloudera's distribution for Hadoop. Handling data is every bit as important as visualizing it.
(http://j.mp/9SxXza)?
It was just published today according to Amazon.