Viz Journal | Movies of the 90s
Hi everyone! I hope you’re all doing well and having a great day so far.
I was recently very surprised to receive a VOTD for my Movies of the 90s Iron Quest viz and I am extremely grateful — thank you, Tableau! I had a couple of people ask me if I can write a blog about how I made it using map layers and my design process, so here it is! I also want to thank Chimdi Nwosu for encouraging me to post this blog and for being so supportive. My method for creating this viz was inspired by his incredible visualisation, Incarcerated in America — I highly recommend checking it out!
This blog is divided into three sections — data preparation, design and the Tableau build. Feel free to jump between sections based on what is relevant to you!
Firstly, I gathered the data for movies from the 1990s using the IMDb website. I did this by manually entering the various attributes (i.e. rating, genre, number of awards, etc.) for each of the movies into an Excel spreadsheet.
Some of the movies required multiple rows to account for them having more than one genre, which was needed for the map layers later. (Note: There were a couple of columns that I didn’t end up using from this initial data collection phase in the final visualisation.)
From there, it was time to head into Alteryx and build the (very basic) workflow. Here is an overview of the finished workflow:
Let’s break this down…
The first step was bringing in the Excel file I created with the movie data. For my visualisation, I wanted the grid of movies to be 7x6 and the sort order to be based on the ranking of the movie according to the IMDb Top 250 list. With this in mind, I needed a distinct list of the movies and their respective rankings. To achieve this, I used the Summarize tool in Alteryx and grouped by the movie name and then took the first “Top Rated Movie #”. After that, I outputted to a new Excel file called “Movie Rows and Cols”.
In Tableau, the layout of the movies will be in a grid formation so we need to now consider the coordinates of each movie. As previously mentioned, the grid will be 7x6. The first row will start from (0,0) to (0,5), the next (1,0) to (1,5) and so on. As the movies were now in order of ranking, I went down the list of movies and manually inputted the coordinates in a “Rows” and “Columns” field in the Excel spreadsheet.
Here is a snippet of how this looked:
Now, all we have to do is join this back to the original movies dataset on the movie name using the Join tool to ensure that every movie has a row and column value. Then I sorted the data again so that the movie rankings were in ascending order using a Sort tool. After outputting this to an Excel file, it’s ready to be plugged into Tableau!
Before we jump into the Tableau Build section, let’s delve into the design aspect of the viz and how it was created.
The design was the most challenging part of this viz, as there were a lot of attributes that I wanted to display at once for each movie in a small space. I knew I wanted to include circles in some form, so the next step was to figure out how each layer would look for the attributes. What helped me is to experiment with different shapes and then lay them on top of each other in Figma to see how they looked. I highly recommend grouping objects together, as it makes it easier when exporting the various layers. You can see an example of how I used groups in my legend frame below:
Once I had all of the shapes, I exported each one individually by hiding the rest of the objects in that frame (using the eye icon shown below), unticking “Show in exports” in the “Fill” section to ensure they save with a transparent background and then exporting the frame.
Doing these steps ensured that the position of the object was maintained, which is very important for the Tableau build when laying each layer on top of the other. All of these objects were saved in the “My Tableau Repository” folder to be accessed in Tableau later.
Here are all of the layer images that were saved in the repository:
And here is how the final design looks when the layers are together:
Keeping with the theme of movies, I wanted the title to look like the “Hollywood” sign with spotlights shining on it. I created the spotlights in PowerPoint by using a triangle shape, applying a gradient and then exporting to bring into Figma. I had a lot of fun trying to decide which fonts to use for the title — the “Showtime” font was amazing and is what I used for the word “Movies”. The font itself is supposed to resemble a “Showtime” sign with lights around it, hence the name; however, I decided to leave out the sides to make it look more like a film strip. I also found “Limelight” — which, again, how perfect is the name?! — that was used as the font for “90s”. Both of these fonts reminded me of old Hollywood, and I decided to make the entire viz design an old Hollywood theme.
Here is the finished result:
The background of the viz is an image of the night sky that I found on Unsplash. I didn’t want the image to be too visible, and I just wanted a subtle hint of the stars to peek through, so I placed a rectangle object over the image that was almost black and set the transparency to 70%. For me, this design was reminiscent of drive-in movie theatres at night, which I absolutely love.
In terms of the viz design as a whole, I wanted to keep it very minimal. I’m a big fan of negative space in visualisations, but I decided to use a little bit less than I normally do for this viz as an experiment. I think adding breathing room to a viz makes a huge difference, and ensures that the design is balanced. The image below shows the padding I used for the main portion of the design:
Now it’s time to get into how this was built in Tableau!
This visualisation was made using map layers, which is quite possibly one of my favourite Tableau features. The flexibility and unlimited possibilities of map layers is incredible, and it was so much fun to try them out in this viz and create everything in one sheet.
The first step is bringing your data into Tableau. Remember the “Rows” and “Columns” fields I created during the data preparation stage? This is where they come in and it will make the whole process a lot easier! We are going to create calculated fields using those fields for each layer in our design, and utilise the MAKEPOINT Tableau function.
Here is the basic calculated field, which I have named “1. MP (base layer)”:
I like to number each calculated field and provide a brief description as it makes it much easier to see what it is referring to, as well as the ordering of the layers. This calculation is essentially using our “Rows” and “Columns” fields as coordinates and creating a spatial object, or point, for each of the movies.
If I drag this new field onto Detail on the Marks card, this is what appears:
We now have the positions for each of the movies — but wait! It’s currently upside down in this view, with the last row appearing at the top of the grid, so I’m going to navigate to Map > Background Maps on the top toolbar and click None. This means I can now edit the axis and set it to “Reversed”, turn the background map back on and display the grid correctly:
Now it’s time to bring in our first layer. I’m going to set the Marks card to Shape and choose the base layer by selecting Shape and… oh no! Where did all the points go?
Don’t worry— you just need to make sure to break up the view based on movies by adding the “Name” field to Detail on the Marks card. Once the grid is visible again click “Shape”, navigate to the folder you saved your layer images in, and select your base layer. You can also navigate to Map > Map Layers and set the background Washout level to 100% to hide the map. I also recommend unticking the boxes in the Map Layers section to ensure the background is transparent, which is important when bringing it into the dashboard later.
Your first layer is now complete! I changed the colour of the worksheet background in this example so you can see the white base layer clearly.
Once you know how to set everything up, it’s just a matter of adding as many layers as needed. To do this, you can duplicate the first calculated field we created and name it based on what the new layer is. In my case, I called it 2. MP (text) as this will be the section that houses the descriptive text for each movie.
Here is the calculation for “2. MP (text)” :
I added the “+0.5” after “[Rows]” because I wanted the text to be slightly underneath the rest of the shapes. Feel free to play around with the values depending on where you want that layer to be! All you have to do next is click and drag this calculation over to the view until you see this pop-up appear:
Hover the field over the section highlighted in orange in the above image and drop it into place to create a new Marks Layer. You’ll now see that a new layer has been added to the Marks card.
From there, you can just repeat the steps we did previously! I’m going to add “Name” to Detail on the Marks card so that it splits across each movie, and then add the various pieces of text I would like to display onto Text on the Marks card, like this:
If you want to add another layer using shapes in your “My Tableau Repository” folder, you will do the exact same as above and drag the appropriate calculated field into the view to create a new map layer. In the example below, the map layer is for the movie genres:
As you can see, I changed the Marks card to Shape and dragged in my “Genre” field onto Shape which contains the genres for the different movies. Then, I assigned each image from my “Movie Genres” folder in “My Tableau Repository” to a genre from the data, like this:
If you have multiple layers in your design like I do, I find it helps to separate the images into individual folders within the “My Tableau Repository” folder so it’s easier to find the shape you need. From there, you can edit the size and colours of your shapes accordingly and add more map layers, if you wish.
- Create calculated fields for each layer using MAKEPOINT, as well as the “Rows” and “Columns” fields in the data to map out the coordinates of each element of your viz
- Edit the positioning, if required, by modifying the calculated fields slightly (i.e. MAKEPOINT([Rows]+0.5,[Columns]))
- Drag the new field onto Detail on the Marks Card if it is the first layer, or straight onto the view to create a new Marks Layer
- Choose the Mark type — in my viz, I used Shape or Text
- Add in the field to split up the view to Detail on the Marks card, in my case that was Name
- Drag and drop the field corresponding to an attribute (i.e. genre) to Shape on the Marks card if you would like to display images, or on Text to show text
- If it is a shape, select the images from your My Tableau Repository folder by clicking Shape on the Marks card and assigning the appropriate shapes to the data items
- Repeat until all layers have been added
And we’re done!
Here is the finished viz:
I also wanted to note that this was my fourth attempt at a viz with map layers (and a viz in general) in the space of a month. That month was full of trial and error, dozens of different datasets and hours of experimenting with designs before an idea finally stuck. What made things even more difficult was having a case of the infamous viz block.
If anyone reading this is experiencing something similar — you are definitely not alone! Take it easy, don’t put too much pressure on yourself and just enjoy the process. If something doesn’t go quite as you planned, so what? You learn with each viz — and also every wrong turn — that you make, and you will conquer that viz block! I came up with the idea for this viz whilst brushing my teeth one morning — ideas really can hit you at any time, and when you least expect it!
Good luck, everyone, and I hope you have a lovely week! 😊