… and tableau contest results

have been announced. My entry got honorary mentions which is the best I could hope for not being based in the US! anyway, the rewards is going through the process, seeing what others have done. and learn from the process.

I was pleasantly surprised to see that Agnieszka – Russian Sphinx chose a subject similar to mine – real estate, but in Moscow. Here’s her entry:

Powered by Tableau

Now she and I used a different approach to display our map and I didn’t really comment on how I made mine (let alone how she made hers)
Here’s my map for the record:

Powered by Tableau

To create my map, I used the default mapping function of Tableau, where you declare the geographic role of two of your measures – one as latitude, one as longitude – and you can plot marks on a map, that can be zoomed, panned etc.

If one of your dimensions is geographical in nature, like a country, US state, US county name or code, Tableau can calculate latitude and longitude so you don’t have to provide them. This also works for zip codes. So, if you have a valid US address, you can extract the zip code out of that (before you put your data in Tableau) and Tableau can represent this on a map quite accurately.
In my case, I had tens of thousands of marks, which were available at a much finer level than the zip code (sometimes down to the appartment number) so I thought it would be a pity to aggregate them so. My data came with notions like neighborhood or block numbers, which is specific to the New York administration I suppose, but interesting in my context. That idea of block number sounded like the right level of aggregation for my data.
The problem is, how do I get the latitude and longitude of each of the blocks?
How I did this was to chose one address per block, and then geocode it with python and google maps. Geocoding is the process of converting addresses, well, in geographical coordinates and while doing it in Python does require coding it is trivial and there are many ready-made examples around which can be reused as is.
then, in my data, I put the coordinates of each block for every record. So any building sale can be associated with a laritude and longitude, which is that of their block.
In another view, I have a simpler map – by neighborhood. Neighborhoods are another proprietary notion, they are groups of blocks. So, I simply average the latitude and longitude of all the buildings in the neighborhood to position their mark.

While it can be desirable to let users interact with the map, in many cases it is not a safe option. Once you let your users unzoom and/or scrool away from the action, it is not obvious for them to get back.
So Agnieszka has used another nifty technique, that of background images.
Her map is really a static file imported with the background image function which is found in the data menu:

Like this, the user can really specify what to use for a map, when does it start, where does it end. The map won’t move afterwards.
However, by doing so one cannot use geographic coordinates to display marks. One has to obtain, outside of Tableau, the x and y coordinates of each mark on the screen. Then, those x and y coordinates can be made into measures, and assigned respectively to the column and row shelves of the viz.

I’ll let you figure out which one is best for your next map project. Note that you can generate highly customizable map backgrounds with a service like cloudmade.




Leave a Reply

Your email address will not be published. Required fields are marked *