Wednesday, August 17, 2022

Drawing Line Charts without Axis Offset in Tableau

There are always more than one ways to skin a cat. In Tableau, there is always one more way to design the same chart. Mastering them will give us more options to satisfy the various requirements we may be asked for.

Line chart is one of the most basic ones. Yet we can draw them in more ways than we care of. But there are many intricacies that are interesting to master.

In graphical design, every tiny bit of space counts because the canvas may be limited or because of alignment with other parts of the dashboard. In this post, we are going to show how to design line charts with minimum axis offset.

Axis Offset with Date in Columns Shelf

This is the default way of creating a line chart. One can notice that there exists always a horizontal offset at the first data mark from the vertical axis. With continuous date, the offset is big. With discrete date, there is half a tick offset. We have no way to edit the offset. 

Note that we dual axis'ed the line chart with an area chart to emphasize both the trend and the volume.

Note that with discrete date, we need to turn on "Show missing values" to create the correct line chart.

Axis Offset with INDEX() in Columns Shelf

To have more control over the axis offset, we can place continuous  INDEX() in the Columns shelf and the date dimension in the Detail shelf. Set INDEX() to compute along the date dimension.

An important caveat is we need to first set up the date dimension on Rows/Columns and turn on "Show missing values". Then drag it to the Detail shelf. This guarantees correct indexing even though we don't have contiguous data.

Edit the axis to be fixed start at 1, and end with automatic.

Now we have the line start at the vertical axis. The offset is 0 which is the least.
We can still have INDEX() in discrete. The offset is the same as the chart with discrete date in Columns.

Line Chart Multiples with INDEX()

We may need to create line chart multiples when splitting a line chart per category (State in the following example). We still like to create them with continuous INDEX() in the Columns shelf so that we have zero axis offset. Then we need to set up the date dimension with "Show missing values" in the Columns shelf before moving it to the Detail shelf.

A very important addition here is to place an INDEX() in the Detail shelf. Then set up its table calculations along the date dimension first and State second (Respect the order pls). 

The 2-dimensional INDEX() is part of the data densification technique. We may not have all the data points at all dates and all states. This INDEX() in the Detail shelf will create a 2-d grid by Date and State. This will guarantee that each line chart per state will be indexed correctly by INDEX() in the Columns shelf. 

After the splitting by state, it is more likely that each line will miss some data at some dates.

Without the two dimensional INDEX(), the line chart multiples will look like this. All lines will start at INDEX()=1. This is not correct.

Summary

In case a viz design requires that the line chart start with zero axis offset, we showed above that we can do it with Continuous Index in the Columns shelf. And in case we need to create line chart multiples with zero axis offset, we can add a two-dimensional INDEX() to achieve it.

The demo workbook can be downloaded from here.


No comments:

Post a Comment