After submitting my design for The History of Famous People, Andy Kriebel asked me if I could write about how I made the dashboard. I agreed, of course, but I suspected this would be a challenge for me. It was an unpredictable design process with many twists and turns. Providing only a simple step-by-step approach would be disingenuous about how I went from A-to-B.
In this post, I will try to describe my thinking throughout the effort, and I will then summarize the key concepts in a subsequent post. As a reader, if you are only looking for the how-to tips, then I recommend waiting for the second blog post. Otherwise, we shall start from beginning.
Click on the image below to interact with the data visualization.
Exploring data can take us to unexpected places and leave us with surprising insights. The key virtues are being insanely curious with the data you are working with and to test every design idea throughout the process. The only worthless ideas are the ones you failed to test with an open mind.
Although the final visualization above may appear to be the result of a well-organized plan or idea, the truth is it took a countless number of failed iterations. It may seem surprising, but I actually consider this design a failure. In all honesty, my objective was to aggregate the data into a data visualization that did not require interactivity. Although I failed with my original design goal, I made some new progress in the exact area I was trying to avoid with this project. It’s odd how things can work out in Tableau.
My interest has grown over the years with the tougher Tableau challenges, like visually communicating survey data, hierarchy data, or population density. Event-driven data sets are another area where opportunities exist for new and creative ways to visualize information. When choosing a new data set from the #MakeoverMonday archive, The History of Famous People data caught my attention for this reason. I was excited to try and discover something new!
Loading fresh data into Tableau is always a fun experience for me, because I am in purely in guessing and testing mode. This perspective allows me to freely explore the data visually with no restraints to my curiosity.
Initially, I was struck by the amount of detail included for each historical person. However, this early enthusiasm waned a bit when I discovered several major data quality issues. When creating a simple difference calculation between the birth year and death year, a number of odd results returned. For example, I had seriously doubted Thomas Hobbes lived to be negative 1,588 years old.
I decided to fix a number of these issues by creating a couple of calculations to adjust the original data, or as I call them Tableau Band-Aids. Admittedly, this was not a best practice, but I did not want to alter the underlying data set from Makeover Monday. I still wanted to fix the data quality issues the best I could early in the process, so I wouldn’t have to worry about it as much during my more creative phases.
My first idea was showing a highly transparent Gantt chart by country, and some early progress made me feel like I was moving in the right direction. I tried similar concepts with a circle chart and a modified box plot with reference lines. For the next couple of hours, I had tweaked these approaches without much additional progress. The final versions of these charts looked okay, but not great. I really wasn’t happy with it, so I finally gave up and tried other ideas.
My next charts were even less useful, and these were easier to give up on. A benefit the running sum line chart gave me was the idea to focus on Europe. In addition, I decided to pare the data down further to only people born before the year 1900. I believe paring down the data into a more manageable data set was extremely helpful.
The real direction of the final design occurred when discovering a small innovation to the Gantt chart, which utilized a simple dual-axis chart. By not adding lifespan on the size marks card for the overlaying Gantt chart and increasing transparency for the underlying Gantt chart, a clean look was created. I really liked this look for this chart type, so it became the base data visualization for the dashboard.
This design choice led to several other new considerations. By presenting data at the individual level, it forced me to change my thinking on my original design goals. My focus switched overwhelmingly to improving the user experience, because of how important intuitive navigation becomes with discovery dashboards. The graphic below helps summarize my thinking on this change in direction.
Data discovery dashboards are reliant on interactivity, which makes me agnostic to any of the potentially interesting stories I may find in the data. My purpose is to support thousands of unpredictable questions, and I should only try to capture the most common questions which affect all elements. This approach to dashboard design creates an ecosystem of data and rules, which supports the answering of unpredictable ad-hoc questions.
Using worksheets as filters is a powerful technique in discovery dashboards, where my opinions have been influenced by working with survey data. Survey data is messy and often packed with too much information. It’s super easy for users to get confused. This typically makes the user experience a top goal of mine, and it’s best accomplished with clean designs and intuitive navigation. When I’m not purposeful with simplicity, complexity naturally occurs.
The first step of using this technique is to identify the dimension groups needed to filter the Gantt timeline. In a survey, the common groupings are the who, what, where, and when questions from demographic items. This perspective was helpful for selecting the dimensions I needed to drive interactivity. I decided on four major categories: location, occupation, time period, and popularity. I could have added more, but I felt a diminishing value would occur.
The next task was selecting an optimal number of elements within each of these categories. It’s an important step, which can be overlooked. If groupings are not defined within a category, then I will typically create a calculation to help group the elements. In my workbooks, these calculations often have the word “bucket” or “grouping” in the name.
Popularity, Occupation, and Time Period Categories
For the popularity category, a histogram was used to see the distribution of page views, which helped me gauge the best levels for selecting group sizes. For the time period category, I looked through Wikipedia to identify the major eras to separate 2,500 years of human history. I have general knowledge on this subject, which helped guide me through this process. For the occupation category, I first used the built in hierarchy in the data to filter the occupations by domain. After this, several additional tweaks were made in the Science & Technology domain, which allowed me to get the number of occupations down to twelve in this selection.
The country groupings were decent, but an additional aggregation was helpful. Italy, France, Germany, and the United Kingdom dominated these records, thanks to their contributions to the Renaissance, Enlightenment, and Romantic Eras. Luckily, the new custom territories feature made it easy to group the smaller countries together. Do users really need a separate filter for Belgium and the Netherlands? I didn’t think so, and this reduced my country categories from 30+ to 7. This minor data decision helped simplify the map filter, which paid unexpected dividends to the overall design and user experience.
Each dynamic menu on the dashboard required its own worksheet. In this case, a worksheet needed to be created for each of the three non-geographic categories: time period, popularity, and occupation. The whole purpose for creating these navigational worksheets is to support dynamic menu functionality. Gantt charts are my favorite choice, because of the control the designer has with look and feel.
For a basic menu, the steps are pretty simple. Dynamic menus only require a dimension pill with multiple index calculations. One index calculation needs to compute on the dimension of interest, while the other index calculation needs to compute on the cell only. An index calculation on the columns shelf creates a horizontal menu, while the rows shelf creates a vertical menu. The index, computing on the cell, should be placed on the size marks card to ensure conformity.
A new wrinkle to this initial construct was discovered after significant amounts of tinkering. Since I felt I gained value from the dual-axis Gantt chart from my initial timeline visualization, I decided to try and test this concept again with these navigation menus. The underlying Gantt chart has no size marks card and acts as the menu separator. The overlaying Gantt chart uses the index calculation in the size marks card with 0% opacity. The key to this approach is to only show the marks label for the overlaying Gantt chart when selected.
The dimension is placed in the text marks card for both Gantt charts, where the underlying chart uses black font and the overlying chart uses white font. When an item is selected by the user, the top Gantt becomes dominant. When an item is not selected, the underlying Gantt chart is visible. These steps were used for the occupation, time period, and popularity filters.
Probably the most significant decision I made for this whole design was deciding on the purpose of my lone parameter. With so many elements in one dashboard, how could I possibly maintain a clean look that does not overwhelm the user? The answer was that I needed a dynamic color legend. This was easy enough for me to incorporate into the Gantt timeline visualization, which updated the color legends based on the parameter selections.
This color selection functionality was extended to the dynamic menus, which then doubled as color legends and navigational items. When a certain category was in focus, then a color menu would appear. When a category was not selected, then it would be completely black to avoid unnecessary distraction.
Below is the calculation for the occupation menu color, and you will notice this is a binary event.
IF [Visual Option] = 3 THEN [Occupation Grouping]
ELSE “Not Selected”
Notice how the above calculation differs from the original timeline color calculation.
IF [Visual Option] = 1 THEN [Europe Countries and Regions]
ELSEIF [Visual Option] = 2 THEN [Era Calculation]
ELSEIF [Visual Option] = 3 THEN [Occupation Grouping]
ELSEIF [Visual Option] = 4 THEN [Popularity Buckets]
**The original timeline color calculation was not used in the final submission… more on this later!**
So, why do I spend so much effort on navigation and legends? Every element that I cannot eliminate during the design process, like redundant legends, have to be placed somewhere on the dashboard. It’s these types of small efficiencies which can maximize the value of limited screen space.
Another great benefit of using this navigational technique is how it allows menus to interact against each other. This underappreciated functionality ensures users will never make a selection that returns zero records, and it also avoids the drawbacks of using quick filters with only relevant values. In addition, this helps give context to different selections, for example, only a few occupations existed in Ancient Greece. The next step was placing the map, menus, and timeline on the dashboard.
Both focus and flexibility can add value to any Tableau dashboard, but these factors are often at odds with each other. The color selection functionality supports focus, while the navigational menu approach supports flexibility. Taken together, focus and flexibility can be achieved without being rigid or overwhelming.
The final touches were small improvements to the final design and the user experience. All of the backgrounds were either white or light grey. I hoped a light color choice and element placement would lead to the feeling of a cohesive look and feel. The European map was placed on the top-right corner to help balance the overall design without grabbing too much attention. I always find it a challenge trying to seamlessly incorporate maps into a dashboard, but this implementation seemed to work okay.
A floating black line was added between the time period and occupation menus, which helped give a feeling of a timeline. These dynamic menus now had three purposes: navigation, legend information, and design enhancement. Form and function working together is a wonderful thing!
Four cartoonish-looking European figures (which I amateurishly made in Illustrator) were included to reinforce the purpose of the dashboard. The challenge with adding graphics to any interactive dashboard is to ensure these elements enhance design without being unnecessarily distracting. I find almost everything in Tableau is about balance.
The final improvements to the user experience were created from overtly listing each step of the possible selections to the user. I forced myself to make clear to the audience what actions were available. Instead of making the user guess where they should start, I wanted to eliminate this barrier by simply recommending a series of actions. I am constantly reminded that I do not get bonus points for being coy or obscure. Clear instructions can only help!
The last steps were cleaning up the tooltips (always clean up the tooltips!) and adding a help icon with instructions and data quality caveats . After some quick quality assurance checks, I was ready to upload to Tableau Public.
By sheer chance, I noticed the colors were incorrect after the upload to Tableau Public. The problem’s root cause was from my original color selection calculation, which used multiple palettes. These color rules were not being respected, which resulted in default colors being indiscriminately applied to my timeline. This ruined all of my user experience enhancements and rendered my data visualization essentially useless.
After much additional toil and failure, I gave up on an elegant solution for fixing this issue. With some dejection, I used a cruder worksheet selection approach, which made me duplicate my timeline into four separate worksheets. Each color palette would get its own timeline Gantt chart. Not an ideal solution for me, but it was necessary.
After this duct tape fix, I had a final version, which rendered correctly in Tableau Public. The dashboard was ready to be disseminated to the broader community. With some anxiety and reservations about its reception, I submitted the link in Twitter under the #MakeoverMonday tag.
Although I’m still deeply aware of my failure to synthesize this data effectively, this process encouraged me to explore and test some interesting concepts with navigation, interactivity, and user experience. The community continues to push the limits of Tableau by making amazing new discoveries each day. I enjoy being a part of this struggle. If I can make even the smallest amount of progress in helping people find new and exciting ways to explore their data, then even my most glaring failures can still feel like accomplishments.