Designing for mobile isn’t something I inherently think about when building a viz, so, this week’s #WOW challenge from Lorna was a useful reminder on the inbuilt functionality Tableau has to make a display typically aimed at a laptop user, also render well on a mobile display with minimal effort.
Tableau allows you to choose a variety of device layouts and define specific instances of how the sheets should display on each, but this challenge was focused on the Automatic Phone Layout option, where the aim was to build a 1200×800 dashboard, which automatically rendered vertically when viewed on mobile. Lorna referenced this Tableau blog as a starting point, which is definitely worth a read.
YTD Summary by Sales
In the requirements, Lorna mentions ‘last 2 years YTD’, but given the dataset used contains years 2016-2019, and the challenge wasn’t really focused on this area, I just presented sales for the whole year as follows :
- YEAR(Order Date) to Rows sorted by Order Date descending (so 2019 is listed first)
- SUM(Sales) on Text with a Quick Table Calculation of Percent Difference. By default, this calculation will work ‘down’ the table, so we need to edit the table calc so it is relative to the Next record, rather than Previous.
- Format this field using custom formatting of ▲0%;▼0% ( I use this site to copy & paste the shape images from)
- Add another copy of SUM(Sales) to Text and then modify the text to format as required.
- To only display Years 2018 & 2019 either
- Filter the Order Date to exclude 2016, and additional filter the SUM(Sales) % difference table calculation to only show non-null values
- or select year 2016 and 2017, right-click and choose Hide
- Add YEAR(Order Date) to Colour and adjust to suit
- Apply formatting to remove row/column/grid lines/ row banding. hide labels and rotate headings
- Change the title of the sheet to YTD
Repeat all of this to create a version for Profit.
Sales Trend Line
This is pretty much Desktop 101 – one of the first charts you’re likely to build when training on Desktop 🙂 So here’s just the picture 🙂
Again repeat to create a version for Profit.
Top 10 Products by Sales Bar Chart
In the requirement Lorna stated (and displayed a title for) Top 10 Customers by Sales, but the chart displayed in her solution showed Products.
I chose therefore to show the same as Lorna (with a corrected title). The instruction in the requirements was also to use Sets. So to do this
Top 10 Products by Sales
Right click on Product Name, select Create -> Set and adjust as below
Then to build the chart
- Add Sales to Rows
- Product Name to Columns, sorted by Sales descending
- Sales to Text
- Order Date to Filter set to 2018 & 2019 only
- Top 10 Products by Sales to Filter
At this point you might find you only have 9 rows displayed, and this is because the 10 largest product sales are considering all years, before then filtering by the years. We need to set the Order Date filter to be Added to Context (right-click on pill). This will force Tableau to filter the data by the relevant years. and then work out the Top 10. When added to context the pill will be grey rather than blue on the filter shelf.
Apply formatting as required
Top & Bottom 10 Products by Profit
Similar to above, I created a Top 10 Products by Profit set and also a Bottom 10 Products by Profit set ( just change the ‘Top’ drop down to select Bottom).
Top & Bottom Products by Profit
To the get a Top 10 & Bottom 10 set, you can create a combined set. I can’t recall if I’ve ever come across this before… I think it was probably part of some #WoW a long time ago… it certainly isn’t something I use regularly.
Right click on one of the Profit sets created and select Create Combined Set and choose your sets in the presented dialog. In this instance we want all members from both sets.
To build the chart
- Add Profit to Rows
- Product Name to Columns, sorted by Profit descending
- Profit to Text
- Order Date to Filter set to 2018 & 2019 only and added to context
- Top & Bottom Products by Profit to Filter
We need a ‘header’ to label the Top & Bottom. I added Top 10 Products By Profit to Rows, and placed it in front of Product Name. This works since the sets are mutually exclusive – no product can be in both the top 10 and the bottom 10. This will display header values of In or Out, which I then aliased to display Top 10 or Bottom 10 (right clicked on ‘In’ and Edit Alias). Then just format to suit.
Building the Dashboard
We’ve got all the component parts , so now we want to add to the dashboard in such a way that the sheets will display vertically when viewed on mobile, even though the requirements stipulate a 1200 x 800 ‘desktop’ type layout.
The requirements also state to use the Automatic Phone Layout option only, which means you shouldn’t have a need to ‘fiddle’ with how the components are displayed when in mobile view.
Basically you’re building on the Default view
but when you click the Phone option, the padlock remains ‘locked’ ie the ‘automatic’ view, and all the objects display in the right order on top of each other.
The key to this, is knowing the fact that the automatic phone layout follows an A-Z approach – across the page from left to right, then down and across from left to right again.
I arranged my objects in rows as
- Row 1 = Title
- Row 2 = Heading
- Row 3 = Sales YTD, Sales Trend, Top 10 Products
- Row 4 = Heading
- Row 5 = Profit YTD, Profit Trend, Top & Bottom 10 Products
All charts were set to Fit Entire View, and I didn’t spend any time creating specific layout containers – I just dropped the objects in the places I wanted.
This subsequently presented as below when I clicked the Phone option on the Dashboard tab
The part I found most tricky was getting the Top & Bottom 10 Products chart to display the detail I could see when viewing Lorna’s solution. I simply ended up needing to adjust the font sizes to be size 6 on the labels and the displayed product names, and moving the column sizer so I had enough of the bar to display.
My published version is here.
Happy vizzin’! Stay safe!