Draft - St Paul's Blog

On my walk to work, I go past St Paul's Cathedral and was recently struck by how lovely it looked with all the cherry blossom. I had been planning a dashboard looking at St Paul's in a more analytical way but thought it would be a nice feature to somehow animate the changing seasons as a decorative element. This blog lays out the steps I took to do this in Tableau.

Tableau is not designed as an animation tool, but it can support simple animated effects when the motion is broken down into a series of data points. This project explored a way to build something a bit more complicated, with blossom appearing and leaves shifting and falling, using path data drawn in CBI Studio, Python-generated frames and the Pages shelf.

The result is a technique that treats each animated object as a mark, with its position, size and appearance defined at each point in time.

Concept

The core idea is to create one row per object per frame.

Rather than storing a single row for each blossom or leaf, the dataset contains repeated rows showing where that object should be at each moment in the animation.

For example:

Object ID Time X Y Size Phase
Leaf 001 0.00 10.2 50.1 0.1 Grow
Leaf 001 0.01 10.2 50.2 0.2 Grow
Leaf 001 0.02 10.3 50.2 0.4 Grow
Leaf 001 ... ... ... ... ...

When Time is placed on the Pages shelf, Tableau steps through each frame. Since the X and Y coordinates change over time, the marks appear to move.

In practical terms, the animation is built as a sequence of scatterplots.

Creating the movement paths

The leaf paths were first drawn in CBI Studio, which allowed the movement to be sketched visually rather than generated entirely from scratch. Those paths then formed the basis of the animation dataset.

The final dataset was created in Python using a phased data structure. Each object moved through a set of defined stages, such as appearing, holding position, moving along a path to eventually leave the view. This made the animation easier to control than trying to write one continuous movement formula for every mark.

Useful fields included:

Field Purpose
Object ID Unique identifier for each blossom or leaf
Time Frame or timestamp used on the Pages shelf
X Horizontal position
Y Vertical position
Size Mark size at that frame
Object Type Blossom or leaf
Phase Animation stage
Delay Offset so objects do not all start moving at once

The time delay was especially important. If every object appears or falls at the same time, the result looks too artificial. Offsetting the timing means different leaves and blossoms move at slightly different moments, creating a more natural sequence.

I also added jitter to the X and Y positions so that the leaves appeared to move in the wind. Without this, the animation felt too smooth and mechanical. Small variations in position helped give the movement a more organic quality.

Building the view in Tableau

Once the data was prepared, the Tableau setup was relatively simple.

Tableau shelf/card Field
Columns X
Rows Y
Pages Time
Detail Object ID
Shape Object Type
Colour Object Type
Size Size

The axes were fixed so the frame stayed stable during playback, and headers were hidden. Custom shapes were then used for the blossom and leaf marks. I used Canva to give the shapes the same watercolour quality as the background image of St Paul's I was planning to use.

The animated sheet could then be layered over a static background, allowing the tree itself to remain fixed while the blossom and leaves moved above it.

Performance and publishing limitations

One important limitation was the animation speed in Tableau Public.

In Tableau Desktop, the playback speed can be adjusted, which makes it easier to test a smoother animation with more frames. However, once published to Tableau Public, the playback speed is fixed and cannot be modified by the author.

In practice, this meant the published version played much more slowly than intended. To make the animation usable on Tableau Public, I had to remove a significant number of frames. This made the final published version noticeably choppier than the smoother Desktop version.

This is worth considering early in the process. A high-frame animation may look good locally, but the Tableau Public playback experience can be quite different.

Key takeaways

The most useful part of this project was getting to grips with how the animation feature of Tableau works, including its limitations and how to think about your data in a new way to make the most of it.

The main limitation was publishing. In Tableau Desktop, the playback speed can be adjusted, but Tableau Public uses a fixed speed. This meant the published version needed fewer frames to play at a usable pace, making it slightly choppier than the smoother Desktop version.

Overall, this is not a technique I would use for every dashboard. However, it was a fun way to explore the animation features available in Tableau.

Author:
Holly Andersen
Powered by The Information Lab
1st Floor, 25 Watling Street, London, EC4M 9BR
Subscribe
to our Newsletter
Get the lastest news about The Data School and application tips
Subscribe now
© 2026 The Information Lab