Red + green + blue = something else

I’ve been posting quite a few times on Tableau these last few days, so I’ll end up the week with one viz I had previously shared on twitter with some success.

so what’s the story?
I have been inspired to do this via the work on onformative which I discovered on But does it float.

I was struck by how the proximity of a red dot, a green dot and a blue dot was interpreted by our human eyes as a spot of another color. Then again, this is how monitors work. If you look hard enough on your lcd screen you may see the sub-pixels.
This is also why, in an image such as this one, the segments of the line appear unaligned, although logically this line is one pixel wide.

Physically, the segments are indeed unaligned, as the each segment uses sub-pixels of a different color which don’t have the same horizontal position within one pixel.

However, I didn’t realize that this effect would work with patches of blue, green and red much bigger than a subpixel.
I made the underlying dataset from a picture of my daughter Violette when she was 2. I converted the picture to a list of values of red, green and blue (thanks, processing) which were all associated to a x and y position on the screen and the name of their layer (so they could be turned on or off). These x and y positions were derived from the position of the pixel on the original image, but the red, blue and green dots are all shifted in one direction so they form a triangle.
Then, I’ve added some extra layers as noise to obfuscate the image.

Here, the effect is voluntary. Then again, if you position lots of marks one next to the other, you could re-create it accidentally, and instead of seeing three distinct dots, your users would see just one and of a different color at that!

… 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:

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:

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.

Tableau contest 2011

Here is my Tableau contest 2011 entry.
The rules stipulated it had to be about business, real-estate or finance, so I chose real-estate. Since everyone loves New-York, and since the data for real-estate transaction is relatively easy to get, that’s what I show. In order to be within Tableau Public 100,000 row limit, I chose to show only the residential transactions (apartment buildings or buildings converted to apartment buildings), larger than 100 square foot and sold at at least $1.

Before I started, I wanted to create a Tableau that would be legible as a static image.
We tableau tribe have seen a lot of interactive dashboards with sophisticated action. Here, I wanted to cater to the discriminate analyst who gets their kicks from seeing patterns emerge with a glance to 90k datapoints.

What does it show for instance? well, while the bulk of transactions are at a price close to the average there are a large part which are done considerably below that, and comparatively, very few which are markedly over that.
The marks which are aligned show either many transactions at the same price (there are distinct $1, $10 and $100 lines for instance) or sales of similar properties. There were a string of sales of identical apartments at 1335 6th Avenue, for instance.

It’s possible to switch the function of the Y-axis of the scatterplot, which can either represent square feet or sale price. The largest transaction on the period was around $4 billion, and the largest in terms of area was just above 10m square feet.
It is also possible to explore through the lists on the right. By selecting “other types” of buildings for instance you can see which apartment buildings once were yeshivas or fire stations or (what?) “detention houses for wayward girls” (there’s one in upper east side).
You can also switch to a map-based version of this dashboard. Speaking of maps, a right-click on any mark can open a google maps window centered on that address for you.

So here goes, enjoy the viz and good luck to all contestants