Have you ever created a Tableau chart that’s just… too much? When a visual contains a lot of data, many marks, or lots of detail, it can easily become overwhelming for a viewer. And when your viewers become overwhelmed, they may just move on.
In today’s post, we’ll look at how dynamic zone visibility can be used in Tableau to reveal a chart in stages, in a style similar to “scrolly-telling” visuals. This post is the 6th in my series of dynamic zone visibility use cases – make sure to check out the others if you haven’t seen them yet!
For this post, I’m going to use the network chart I built for my 2025 Iron Viz Qualifier entry. You can find the whole viz here. I made the original network chart using the amazing generator tool from LaDataViz. This method works for any type of chart, though!
Here’s the chart in action. It starts with just one point, and some explanatory text. As the user clicks the plus signs, more and more of the chart is revealed! Because the chart (and explanatory text) shows up one piece at a time, it’s much clearer what the user should focus on, and how the story unfolds.
Let’s dive into how you can build a chart like this for yourself! As a note, I’m going to keep this tutorial pretty high level – we won’t get into all the possible iterations of this concept, because there are just too many – but I’d love to answer your questions in the comments.
1. Make a full chart
To get started, you’ll need a full chart with all the information you want to show on it. This should include everything – basically, it’s the final “step” that will be revealed in your dashboard. Here’s what mine looks like:
(And yes, the colors look terrible here – it’s because the final dashboard is dark mode!)
This stage is also the right time to apply any formatting, tooltips, labels, etc, that you’ll want on all of the charts. Try to make sure the chart is as close to perfect as possible – it’s much easier to do the formatting now, before you copy everything.
Important: It’s vital that your chart axes are locked down, so that they will not change when your data changes. Open the settings for each axis and change them to “fixed”.
(If your chart uses categorical data for an axis and you plan to hide some of the categories in earlier steps, you’ll have to get a bit more creative – depending on your data structure, “show hidden data” (in the analysis pane) may work. You can also modify padding on the final dashboard in the later steps to make the categorical axis appear to be the same size.)
2. Make some copies!
Take the tab with your chart, and start copying it! You’ll need one copy of the chart for each layer that you want to reveal, including the starting and ending states. You can see in the screenshot above that I have 4 copies of my chart, for the starting chart + 3 reveal steps.
3. Filter down the copies
Now it’s time to reduce the data. Go into each copy of your chart, and apply filters (and/or “hide” controls) to limit the data that’s shown. Configure the copies so that each represents one view in the reveal process. Since we locked each axis to a fixed range in step 1, the overall size/position of the chart elements won’t change – only the data shown will. (Note that it may appear different on the sheet page because of Tableau’s auto-sizing, but that’s ok – it will look the same on the dashboard in a same-sized container.)
Here’s what one of my intermediate step charts looks like:
4. Create a container
At this point, we’re ready to start working on the dashboard. Create a horizontal or vertical container (it doesn’t matter which – I like using horizontal for wide chart areas and vertical for tall areas just for easier visibility), and drag all of your charts into it. Order doesn’t matter. Change the size and position of the container to be the size you want the final chart to be.
Hide the chart titles if desired, and change individual chart padding if needed. Set each chart’s display to be “Entire View”.
At this point, if you intend to have explanatory text also appear with each stage of your chart (which I recommend! It makes it easier for viewers to interpret), add that to your dashboard. You can add it to a container or float it, up to you.
5. Set up show/Hide parameter and states
Now we have some backend work to do! We’ll need to set up a parameter and some calculated fields to control which pieces of the chart and text are displayed. These are the fields we’ll use to set the dynamic zone visibility.
It’s worth noting here that I’m going to have to set up two separate sets of fields, because my chart and my text behave differently. As each piece of the chart comes in, the new chart replaces the old one – only one chart is ever shown at a time. However, as each piece of text comes in, it adds to the old pieces – you see the new text and everything that came before it.
However, both can use the same controlling parameter. Set this up as a string or numeric parameter, with values that are descriptive enough that you understand what they mean:
Ok, now let’s set up the calculated fields. The set for showing the chart are going to be pretty simple – if “Show3” is selected, for example, then I want to show chart 3. So I’ll create a boolean (true/false) field, also called show 3, that just checks if “Show3” is also selected.
You can see that I’ve also created calculated fields called “Show1”, “Show2”, and “Show4”, that all follow the same pattern.
Now let’s look at the text fields. If you don’t want your text to behave like mine does, and instead want only one piece of text revealed at a time, you can skip this step and use the same fields used for the chart. Or if you don’t want any text at all, you can skip to the next step as well!
But if you do want a similar set up to mine, where text stays on the screen once it’s revealed, we’ll need a couple extra fields. In the screenshot above, you can see two extra calculated fields: “Show 2-“, which shows everything from step 2 and earlier, and “Show 3-“, which shows everything from step 3 and earlier. We actually don’t need anything special for showing the first piece of text, because it will always be visible on our screen. We also don’t need anything special for the final piece of text, because it will only be visible when “Show4” is selected, so we can use the “Show4 calculated field”. But the middle steps need their own calculation. Here’s what the “Show 3-” field looks like:
This field returns “True” (meaning “show the text”) if part 3 of the chart is shown OR if part 4 of the chart is shown – that is, it appears when we show part 3, and remains visible when we reveal part 4. The “Show 2-” field uses the same logic, but adds “[Network Show]=’Show2′” to the logic so that it also appears when part 2 is shown.
6. Apply Dynamic Zone Visibility
Let’s make all these fields work for us! Head back to your dashboard, and apply the appropriate calculated field to the “control visibility using value” option for each object. Use “Show1”, “Show2”, etc, for the charts, and “Show2-“, etc, for the text. As discussed above, you don’t need to add any dynamic zone visibility to your first text object, and you can use the final state of the graph (“Show4” in my case) for the final text object.
At this point, it’s a good idea to show the controlling parameter on your dashboard (click the arrow on any of the charts and choose it from the parameter dropdown) and click through all the options to make sure it’s working.
7. Add Parameter controllers
Finally, we need to add a way for your user to change the value of the parameter that controls what’s visible. The easiest way to do this is by using a built in parameter control – I like the slider best for this use case. If you’re not very comfortable with parameter actions and want to keep it simple, that’s what I recommend.
In my dashboard, I created a set of custom buttons using parameter actions. I’m not going to give a super detailed tutorial of how to do that right now, because it would make this post far too long – I plan to do a more detailed post in the future – but I’ll show you an example of how one of my buttons is set up. It’s very similar to the structure of the clear filters button from this post, which has a much more in-depth tutorial – the only difference is that you create a parameter action instead of a filter action in the middle steps.
Here’s what one of my button sheets looks like. This button will change the parameter to “Show3”:
You can see 4 fields in the detail and text pane. “False” and “True” are just boolean calculated fields that contain false and true respectively. “Show3 Text” is a calculated field containing the text “Show3”. The “+” field contains the plus sign that I used for the icon. (You could use any field for the text here and change it to a shape instead, or edit it in the text pane – it doesn’t have to be the actual value of the field.)
You can ignore the action filter, as that gets applied when we create the dashboard actions.
After I created my button, I added it to the dashboard, and created the dashboard actions. We’ll need two actions, one to change the parameter and one to change the highlighting. Here’s the action that changes the parameter:
And here’s the filter action that clears the highlighting. (There’s a lot more detail on how this works in the linked post above, if you’re curious!)
You will need to mimic this structure (sheet + parameter action + filter action) for each button that you want to show.
Once you have all your buttons, and have tested them to make sure they work, add dynamic zone visibility to them using the same fields you used for the text.
The end
And that’s it! This is a fairly simple concept, but requires quite a few steps to execute. If you have questions about this process, or about how to apply it to your specific use case, leave them in the comments – I’d love to answer them!
Leave a Reply