MIP Logo

Waffle Chart Tutorial

This post was originally published on The Data School blog between 2018 and July 2025, before our program was renamed to MIP’s Analytics Career Accelerator. References throughout this article to “The Data School” or “DS” all refer to what is now MIP’s Analytics Career Accelerator. The program, its people, and its commitment to launching outstanding analytics careers remain the same – just under a new name.

If you are having trouble viewing this article, please report it here

In the mainstream Tableau visualization works, the pie chart appears less and less. The main reason is that the area of the pie chart can mislead readers’ feeling of the actual measurement value, and readers can’t understand the data through the radian displayed by the pie chart.

To reveal the relationship between parts and the whole, waffle chart is an ideal option. This tutorial will show you how to draft a waffle step by step.

Data preparation

Waffle chart is one of the few chart types that require two datasets. The first dataset is used to form the shape of waffle. Below is the structure of it.

Each column and row represent a single block in the chart. There are a total 100 blocks in the chart.

Build a waffle

Drag attribute ‘column’ to Columns and attribute ‘row’ to Rows, change the Mark to ‘Square’ then uncheck ‘Aggregate Measures’. Now you get a waffle chart without data, adjusting size to make it look nice.

Input actual data

The display logic of data in waffle chart is different from other charts, you do not need to add the data to the data sources. To be more specific, we need to manually create and edit a calculated field to display the data. For instance, suppose that our data is regarding gender distribution. According to the data, the percent of male is 30% and the percent of female 70%, below is the formula of calculated field and we can name it ‘color’.

Measures

After that, drag this field to Color. Your chart should looks like this:

Time Intelligence

In addition, in some cases your data may involve three or even more groups, the formula for multiple groups is like this:

If INDEX() <=XX then ‘Group 1’
ELSEIF INDEX()>XX and INDEX()<=XX then ‘Group 2’ ELSEIF….ELSEIF….
ELSE ‘Quick’ END

Share this post