Data Visualization Tools and Learning Resources

Want to visualize data, but not sure where to start?

Below is a rundown of the tools I’ve found to be the most useful, along with some tips and resources that you may find helpful for learning them.

For thoughts on how to approach data visualization design, there are three books that stand out to me as outstanding, each with a very different perspective. All three are full of great examples and make for fun, easy reads.

You can find examples of some of my favorite data-driven graphics here: Why Visualize Data?, a video-heavy (100mb) tour through the data visualization zoo.

My subjective list of top data visualization tools

  1. JavaScript (particularly d3.js, three.js, and leaflet.js)
  2. GIS (QGIS)
  3. Excel
  4. Mapbox, CARTO
  5. Python
  6. R

This list is not meant to be an objective value judgement of which tools are better than others. These are just the ones I’ve found most useful in my experience. They are all very different, and depending on what you want to create and why, there is a case for any one of them being the “best,” as well as many others (I haven’t tried Processing yet, but it looks awesome).

That said, for anyone who really wants to learn how to visualize data, I would strongly recommend focusing on #1. As far as I’m aware, there is nothing any of the other tools can do graphically that can’t also be done with JavaScript (if you know otherwise, please correct me). The reverse is not true. Because JavaScript is the language of the web, it is the only one that can be used to create interactive web-based graphics.

JavaScript also has the largest ecosystem of extensions, plugins, and online support for making data visualizations. So, even for non-web-based graphics, JavaScript is often the most powerful tool. A great example is Neil Halloran‘s epic data visualization video The Fallen of World War II, created not with $10,000 graphic design software, but with simple JavaScript.

Learning JavaScript / D3

If you don’t already have some background in coding, the learning curve for JavaScript may be steep. But as programming languages go, it is one of the easier ones to learn and not a bad place to start.

Many people also find that D3 (the Swiss Army Knife of data visualization) has a steep learning curve, but I think that is mostly due to two obscure concepts that come into play everywhere: data joins and selections. It’s difficult to make progress learning D3 without understanding those concepts first. It really clicked for me after watching the first few videos in this series. If you can get those parts figured out, D3 allows you to do a lot with very little coding. It is also well documented, and there are a ton of a great examples on

d3 data visualization example
D3 recreation of Hans Rosling’s memorable 2006 TED talk

If that all sounds too daunting, there are many higher-level JavaScript plugins built on top of D3, which abstract away much of the complexity.

Geographic Information Systems

GIS is also a very powerful tool (technically, a category of tools). But unlike JavaScript, anyone can pick it up and start building maps on day 1. GIS tools look pretty intimidating at first glance. There is an enormous number of menus, options, and settings, and many unfamiliar terms that have little or no meaning outside GIS. But the reality is that most of it applies only to very specialized tasks, mostly for data analysis rather than for making maps.

In my experience, to make most maps, only about 6 or 7 of the menu items regularly come into play. The “hack” to learning GIS is familiarizing yourself with a few key concepts (joins and map projections) and getting the basic terminology straight. You can find the answer to nearly any question online, but without the terminology, it becomes very difficult to phrase what you want to know.

Download QGIS, spend a few hours learning the basics (here are some notes from a talk I gave earlier this year), follow along with a few QGIS examples on Youtube, and you will be amazed at what you will be able to do.


Excel ain’t sexy, but it’s powerful. Its built-in charting functionality includes almost any chart type you can name, with a wide range of options for customization. And best of all, its really easy. You just highlight the numbers to want to visualize and press the chart button.

If it’s good enough for David McCandless, it’s good enough for me.

Mapbox / Carto

I recommend both of these tools often to people who would like to design interactive maps, but don’t have a background in coding. Both products have easy-to-use online tools for building maps, which are easy to embed online. They also both have powerful, open source JavaScript libraries for people who want to code up the maps themselves.

Mapbox offers more flexibility for styling the base map. CARTO has a broader range of options for visualizing the data. They’re both great tools with free for casual users.

Python vs R

Python and R are the languages of data science. Both include some great extensions for data visualization and in general they share a lot of overlap. If you search around online you will find a lot of opinions about which of the two is better. From my perspective, R is the better language if you want to do complex statistics. Python is better if you also want to learn some general purpose, non-data-related coding.

Python mostly uses the imperative programming style, which will be familiar for anyone with a background in JavaScript, C, Java, or most other big name programming languages. R uses a functional programming style, which many people (myself included) find confusing, but many other people claim is more intuitive.


This one was not on the list. Technically, it doesn’t even exist…yet. But it will in a matter of weeks.

Blueshift is my newest project. It’s designed to be an easy-to-use tool for building “dynamic” maps — those that involve moving objects, changing colors, 3D shapes, and non-standard map projections. It’s particularly geared toward data that has a time component (for example, the history of world cities) and information that is hard to express on a map using color (for example, “how much more expensive is NYC housing compared to the rest of the country?”).

Blueshift is nearly complete and will be launching soon in private beta. If you’d like to give it a try (it’s free), drop in your email at and I’ll send an invite when it’s ready to go.

Blueshift mapping tool