Generate a Waffle chart using pyWaffle in Python

Data visualization is crucial for efficient information comprehension and presentation. Among the many chart types available, waffle charts offer a unique way to display data as square tiles in a grid-like structure. The powerful Python module PyWaffle facilitates waffle chart development for categorical data visualization. In this article, we'll explore how to create waffle charts using PyWaffle and analyze different datasets through visual representation.

Installation

First, install the PyWaffle library using pip ?

pip install pywaffle

Basic Waffle Chart - Sales Distribution

Let's create a waffle chart to analyze the monthly sales report of a shopping mall by department ?

import matplotlib.pyplot as plt
from pywaffle import Waffle

# Sales data by category
data = {
    'Electronics': 15,
    'Clothing': 35, 
    'Groceries': 50
}

# Create waffle chart
fig = plt.figure(
    FigureClass=Waffle,
    rows=5,
    columns=10,
    values=data,
    legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1)},
    colors=['#2196f3', '#ff9800', '#4caf50'],
)

plt.title('Sales Distribution by Category')
plt.show()

Sports Tournament Results

Here's another example showing tournament match scores for different teams ?

import matplotlib.pyplot as plt
from pywaffle import Waffle

# Tournament scores
data = {
    'Team Australia': 230,
    'Team England': 290,
    'Team India': 250
}

# Create waffle chart
fig = plt.figure(
    FigureClass=Waffle,
    rows=8,
    columns=12,
    values=data,
    legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1)},
    colors=['#ffeb3b', '#e91e63', '#ff5722'],
)

plt.title('Tournament Match Scores')
plt.show()

Key Parameters

Understanding the main PyWaffle parameters ?

Parameter Description Example
rows Number of rows in the grid 5, 8, 10
columns Number of columns in the grid 10, 12, 15
values Dictionary with category names and values {'A': 10, 'B': 20}
colors List of colors for each category ['#2196f3', '#ff9800']

Advanced Customization

PyWaffle offers additional customization options for enhanced visualization ?

import matplotlib.pyplot as plt
from pywaffle import Waffle

# Website traffic data
traffic_data = {
    'Desktop': 45,
    'Mobile': 40,
    'Tablet': 15
}

# Advanced waffle chart with customization
fig = plt.figure(
    FigureClass=Waffle,
    rows=10,
    columns=10,
    values=traffic_data,
    colors=['#3498db', '#e74c3c', '#f39c12'],
    legend={'loc': 'lower left', 'bbox_to_anchor': (0, -0.1)},
    starting_location='NW',
    block_arranging_style='snake'
)

plt.title('Website Traffic by Device Type', fontsize=16, pad=20)
plt.tight_layout()
plt.show()

How It Works

Waffle charts represent data proportionally using a grid of squares. Each square represents a unit of data, and different colors distinguish categories. The total number of squares equals rows × columns, and each category occupies squares proportional to its value relative to the total.

Conclusion

PyWaffle provides an intuitive way to create engaging waffle charts in Python for categorical data visualization. With customizable parameters like colors, grid dimensions, and legends, you can create informative and visually appealing charts that effectively communicate data proportions and comparisons.

Updated on: 2026-03-27T12:04:07+05:30

681 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements