Beginner Python & Math for Data Science Starts Monday! Enroll Now

Displaying Images in Tableau (with some help from Python)

By Roberto Reif • July 24, 2017

This post was written by Roberto Reif, Metis Sr. Data Scientist based in Seattle. It was originally posted on his blog here

_____

With Tableau, one of the cool things you can do is define every pixel from an image. This allows you to create interesting visualizations as described below. But before we get started, let’s first understand some fundamental concepts about digital images.

DIGITAL IMAGES  

A digital image is a matrix made out of pixels (the smallest element on a screen). In the figure below, we present an image of fruits and vegetables. It can be observed that when we zoom into a portion of the image, it is no longer smooth, but made out of individual squares. Each square is known as a pixel. The size of the image is defined by the number of pixels it has in width and height. The original image below is made out of 1577 x 852 pixels in the width and height, respectively. Therefore, it has a total of 1,343,604 pixels. The more pixels an image has, the better its resolution. The drawback is that the file size is also larger. 

Each pixel has 3 values used to represent the color. The 3 values represent the amount of Red, Green and Blue, also known as RGB. There are 255 possible values that can be used to represent each of the RGB values. The image below shows the amount of red, green and blue used for the original image, and we also show a grayscale version of the image. A grayscale image can be obtained by making the values of the RGB the same.

WORKING WITH TABLEAU

Tableau allows us to define a data point based on its row and column location.  When we view a digital image, each pixel is located at a specific row and column. In the example below, we present an image made out of 4 columns and 3 rows (12 pixels in total). We also made each pixel grayscale with a different value between 0 (black) and 255 (white).

CONVERTING AN IMAGE INTO ROWS AND COLUMNS

To get an image into Tableau we need to create a file format that describes three parameters the row, column and grayscale value of each pixel.  To do this we can use software tools like Python.  Below is a simple script that loads an image, converts it into grayscale, resizes the image, and saves the row, column, and grayscale value into a csv file.  We do not have to resize the image, but in some cases, we can apply this to reduce the total number of pixels in the image.  In this example, we change the image size from 1577 x 852 to 600 x 324.  Note that we roughly maintain the ratio of width/height so the image does not deform. 

The output csv has the following form:

VISUALIZING WITH TABLEAU

We can now bring the csv file into Tableau and we can:

  • - Move the “Row” measure to Rows
  • - Move the “Column” measure to Columns
  • - Move the “Value” measure to Color
  • - Uncheck the “Aggregate Measures”

Note that the row values are in reverse order; therefore, in the y-axis we need to “Edit Axis” and check “Reversed”. 

We can then format the image as shown below. We can observe from the tooltip of the figure below, that we can have information about specific pixels.

Finally, with some clever manipulation, we can expand the above concept and create images based on text as shown below. Here is another great example from Karen Hinson, and a great blog post from Ken Flerlage, who describes a method of extracting an image into a Tableau friendly format without writing code.


I hope you find this helpful! 


Similar Posts

data science
SwitchUp Guest Post: Skills Needed to Prepare for a Data Science Bootcamp

By Metis • March 04, 2019

Knowing that bootcamps present a particular type of learning experience, we wrote a guest post on SwitchUp covering the hard and soft skills necessary to prepare before you apply.

data science
Sr. Data Scientist Roundup: Managing Essential Curiosity, Creating Function Factories in Python, and Much More

By Emily Wilson • February 22, 2019

This blog series tracks and discusses the recent activities and accomplishments of our talented Sr. Data Scientists. This month, read advice from the team on how to manage your own data team's curiosity, how to democratize data for all, how to create function factories in Python, and more.

data science
Sr. Data Scientist Roundup: How WaveNet Works, Art + Data Science, Upcoming Conference Talks, & More

By Emily Wilson • June 19, 2019

When our Sr. Data Scientists aren't teaching the intensive, 12-week bootcamps or corporate training courses, they're working on a variety of other projects. This monthly blog series tracks and discusses some of their recent activities and accomplishments.