Introduction
For years, I have dealt with an intrinsic assumption in Tableau that really hampers my ability to get work done when using the Pages shelf. This assumption makes it nearly impossible to efficiently create publication quality charts when the pages shelf (Figure 1) is used to produce a large number of charts.
This usually occurs when I am sweeping through an extensive data set to produce a large number (typically hundreds) of charts. The assumption is hard to explain but is easy to demonstrate with an example, which I present below in the embedded video. I will do my best to introduce and explain the assumption before you watch the video.
If you like this article and would like to see more of what I write, please subscribe to my blog by taking 5 seconds to enter your email address below. It is free and it motivates me to continue writing, so thanks!
A Visual Example of the Assumption
As shown below, Figure 2 and Figure 3 display the same data. Both Figures were created using the pages shelf to display data from randomly selected DMA number 51 (out of 200!). Â The difference in the two figures is how the vertical axis limits were set. Â Figure 2 shows the automatic axis scaling determined by Tableau. Figure 3 shows manual axis scaling set by the User. Is Figure 2 or Figure 3 a more informative graphic?
Figure 3 is a more informative graphic than Figure 2 because more appropriate vertical scaling was used. The vertical scaling used in Figure 3 more clearly shows the variation in the data over time, which is the intent of the control chart.
Unfortunately, at this time, it is not possible to automatically produce charts like Figure 3 in Tableau when the Pages shelf is used to produce a series of figures. Tableau program settings (and intrinsic assumptions) only allow the production of graphics like Figure 2.
The assumption that this post is describing relates to how Tableau sets the vertical axis scales when using the Pages shelf. Tableau assumes that all Figures created with the Pages shelf should have the same vertical axis scales applied (i.e., the same y-axis max and min will be applied to the charts created on all pages). This assumption in faulty for most work and is the reason for this post.
What Causes The Axis Scaling Problem?
The axis scaling in Figure 2 is automatically set by Tableau and uses what I call the global axis scaling assumption. Global scaling is used by Tableau when the pages shelf are employed to create a series of graphics. With global scaling, the min and max values for each y-axis being created are fixed and are equal to entire data range inherent in the measures being plotted across all pages.
Therefore, the min and max are set to accommodate the largest span across any (and all) pages you are going to produce. If you have one individual page that needs a large y-axis span relative to all the other pages, this large span is going to be used for all the other pages. It is not possible to control this behavior. The global min and max approach is OK if all of your charts have similar ranges on the vertical axis. However, if your data varies significantly, like this example of real-world data does, then this assumption is faulty and the graphics produced using it are poor.
If you happen to have a small data range on any given page, you end-up producing poorly constructed graphics that look like Figure 2. This occurs even with the “independent axis” scaling option selected as shown in Figure 4. Effectively, this axis scaling option is not truly independent in this situation because the charts created for all pages are treated the same, irrespective of the data contained on each page.
This global axis scaling approach means that the only way I can create the Figure 3 chart is to manually set the y-axis ranges for both the moving average and moving range charts for each page being produced. In this example with over 200 control charts to produce, I cannot take the time to manually scale both vertical axes on each of the control charts that I want to produce. The manual-scaling approach is not practical or time efficient.
How Can This Be Fixed?
This problem, I contend, should be easy to fix. Tableau needs to add a “local data” axis scaling option that derives its min and max settings from the data shown on each page as it is being created. Â For each new page being created, the min and max axis settings need to be reset to properly display the data.
The y-axis limits used Figure 3 were determined based on the data ranges only in DMA 51. Â In this case, appropriate min and max values were manually set to accommodate the data ranges for the two line charts shown Figure 3. Â This approach will produce pages having different vertical scaling, but that is exactly what is needed in many real-world situations!
I understand why Tableau enforces a fixed (global) axis range when the page shelf is used. In many instances, it makes most sense to conform to the visual-analytics best practice that states that all charts should be compared to one another on the same scales. However, this assumption doesn’t always apply to real-world problems and it presents a problem for many cases of high-volume graphics production.
Maybe this isn’t a problem for a lot of people. I don’t know if people produce the large volume of work that I do in Tableau by using the page shelf. I use it about every day to either produce animations or to automatically produce hundreds of charts for certain jobs.
I think the pages shelf is one of the most under-appreciated aspects of Tableau Desktop, but the axis scaling option needs to be expanded to allow local axis scaling.
The Video That Demonstrates the Problem
Describing this problem wasn’t easy, and it might not even be intelligible based on what I’ve written! The following video might make more sense by showing you how Tableau functions in this particular setting.
Interesting post—I agree that Pages is one of Tableau’s key tools for working with larger data sets. I also like your suggested improvement for axis scaling.
How do you ultimately display / distribute the views?
A log scale might work, except that you have negative values. If you’re using Tableau Server or creating PDFs, have you thought about using the Tableau Javascript API to advance through the DMAs by changing filters? …
Jim
Hi Jim,
Thanks for the comments!
You comment has lead me write another blog post that I’ll publish soon about (1) how we use Tableau in these high-production settings, (2) current Tableau deficiencies and (3) my future vision for Tableau, including a programming language. I’ll just say that historically I’ve distributed control charts via pdf files to our staff and clients but that might be changing with the advent of Tableau Online.
Your API idea is both interesting and timely. Last week, I had the same idea of using the API to attack this problem and studied the capabilities that the Tableau API provides. Unfortunately, there are no controls for directly setting y-axis scales using the API, so I didn’t continue thinking about writing a custom API code for this application. However, your idea looks at the problem from a different perspective. You envision creating one basic control chart with dynamic scaling and then using filters to sweep through the DMAs by turning filters on and off. This would allow for dynamic y-axis scales and I think I’m going to investigate that approach. I like the idea you propose, so thank you.
Ken