How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

Matplotlib pie charts are powerful tools for visualizing data in a circular format. This comprehensive guide will explore the various aspects of creating and customizing pie charts using Matplotlib, a popular data visualization library in Python. We’ll cover everything from basic pie charts to advanced customization techniques, providing you with the knowledge to create stunning visualizations for your data.

Matplotlib pie charts Recommended Articles

Introduction to Matplotlib Pie Charts

Matplotlib pie charts are an excellent way to represent data as proportional segments of a circular graph. They are particularly useful for displaying the composition of a whole or comparing parts to the entire dataset. Pie charts in Matplotlib offer a wide range of customization options, allowing you to create visually appealing and informative visualizations.

Let’s start with a basic example of creating a matplotlib pie chart:

import matplotlib.pyplot as plt

# Data for the pie chart
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']

# Create the pie chart
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Basic Matplotlib Pie Chart - how2matplotlib.com')
plt.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we create a simple matplotlib pie chart with five segments. The sizes list represents the values for each segment, while the labels list provides the corresponding labels. The autopct parameter adds percentage labels to each slice.

Customizing Colors in Matplotlib Pie Charts

One of the most effective ways to enhance your matplotlib pie charts is by customizing the colors. Matplotlib offers various color options and palettes to make your charts visually appealing and easy to interpret.

Here’s an example of a matplotlib pie chart with custom colors:

import matplotlib.pyplot as plt

sizes = [25, 20, 30, 15, 10]
labels = ['Category A', 'Category B', 'Category C', 'Category D', 'Category E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%')
plt.title('Matplotlib Pie Chart with Custom Colors - how2matplotlib.com')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use a custom color palette defined in the colors list. Each slice of the pie chart is assigned a specific color, creating a visually striking chart.

Adding Exploded Slices to Matplotlib Pie Charts

To emphasize specific segments in your matplotlib pie chart, you can use the explode feature. This technique separates one or more slices from the main pie, drawing attention to important data points.

Here’s how to create a matplotlib pie chart with exploded slices:

import matplotlib.pyplot as plt

sizes = [35, 25, 20, 15, 5]
labels = ['Product A', 'Product B', 'Product C', 'Product D', 'Product E']
explode = (0.1, 0, 0, 0, 0)  # Explode the first slice

plt.pie(sizes, labels=labels, explode=explode, autopct='%1.1f%%', shadow=True)
plt.title('Matplotlib Pie Chart with Exploded Slice - how2matplotlib.com')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the explode parameter to separate the first slice from the main pie. The shadow parameter adds a subtle shadow effect, enhancing the 3D appearance of the chart.

Customizing Label Formatting in Matplotlib Pie Charts

Matplotlib pie charts allow for extensive customization of label formatting. You can adjust the font size, color, and position of labels to improve readability and visual appeal.

Here’s an example of a matplotlib pie chart with custom label formatting:

import matplotlib.pyplot as plt

sizes = [30, 25, 20, 15, 10]
labels = ['Category 1', 'Category 2', 'Category 3', 'Category 4', 'Category 5']

plt.pie(sizes, labels=labels, autopct='%1.1f%%', 
        textprops={'fontsize': 14, 'color': 'white'},
        wedgeprops={'linewidth': 3, 'edgecolor': 'white'})
plt.title('Matplotlib Pie Chart with Custom Label Formatting - how2matplotlib.com', fontsize=16)
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the textprops parameter to customize the font size and color of the labels. The wedgeprops parameter is used to add white borders to each slice, creating a clean and modern look.

Creating Donut Charts with Matplotlib

A variation of the traditional pie chart is the donut chart, which features a hole in the center. Donut charts can be created using Matplotlib by adjusting the wedgeprops parameter.

Here’s how to create a matplotlib donut chart:

import matplotlib.pyplot as plt

sizes = [35, 25, 20, 15, 5]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%',
        wedgeprops={'edgecolor': 'white', 'linewidth': 2, 'width': 0.6})
plt.title('Matplotlib Donut Chart - how2matplotlib.com')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the width parameter within wedgeprops to create the donut shape. The width value of 0.6 means that the outer radius of the donut is 60% of the plot’s radius.

Adding a Legend to Matplotlib Pie Charts

For pie charts with many categories or when you want to provide additional information, adding a legend can be helpful. Matplotlib allows you to easily add and customize legends for your pie charts.

Here’s an example of a matplotlib pie chart with a legend:

import matplotlib.pyplot as plt

sizes = [30, 25, 20, 15, 10]
labels = ['Category A', 'Category B', 'Category C', 'Category D', 'Category E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

plt.pie(sizes, colors=colors, autopct='%1.1f%%', startangle=90)
plt.title('Matplotlib Pie Chart with Legend - how2matplotlib.com')
plt.axis('equal')
plt.legend(labels, title="Categories", loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the plt.legend() function to add a legend to the chart. The bbox_to_anchor parameter positions the legend outside the pie chart for better readability.

Creating Nested Pie Charts with Matplotlib

Nested pie charts, also known as multilevel pie charts, allow you to display hierarchical data in a single visualization. Matplotlib provides the flexibility to create these complex charts with relative ease.

Here’s an example of creating a nested matplotlib pie chart:

import matplotlib.pyplot as plt

# Outer pie chart data
sizes_outer = [40, 30, 30]
labels_outer = ['Group A', 'Group B', 'Group C']
colors_outer = ['#ff9999', '#66b3ff', '#99ff99']

# Inner pie chart data
sizes_inner = [15, 25, 10, 20, 30]
labels_inner = ['A1', 'A2', 'B1', 'B2', 'C1']
colors_inner = ['#ff9999', '#ffcccc', '#66b3ff', '#99ccff', '#99ff99']

# Create the outer pie chart
plt.pie(sizes_outer, labels=labels_outer, colors=colors_outer, autopct='%1.1f%%', radius=1.2)

# Create the inner pie chart
plt.pie(sizes_inner, labels=labels_inner, colors=colors_inner, autopct='%1.1f%%', radius=0.8)

plt.title('Nested Matplotlib Pie Chart - how2matplotlib.com')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we create two pie charts with different radii. The outer pie chart represents the main categories, while the inner pie chart shows subcategories. This technique allows for the visualization of hierarchical data in a single chart.

Customizing Text Properties in Matplotlib Pie Charts

Fine-tuning the text properties of your matplotlib pie charts can significantly enhance their readability and visual appeal. You can adjust various aspects such as font size, style, color, and positioning.

Here’s an example of a matplotlib pie chart with customized text properties:

import matplotlib.pyplot as plt

sizes = [30, 25, 20, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%',
        textprops={'fontsize': 14, 'fontweight': 'bold', 'color': 'white'},
        wedgeprops={'linewidth': 2, 'edgecolor': 'white'})
plt.title('Matplotlib Pie Chart with Custom Text Properties - how2matplotlib.com', fontsize=16, fontweight='bold')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the textprops parameter to customize the font size, weight, and color of the labels and percentages. The title is also customized using the fontsize and fontweight parameters.

Creating Pie Charts with Subplots in Matplotlib

When you need to compare multiple datasets or display related pie charts side by side, using subplots can be an effective solution. Matplotlib allows you to create multiple pie charts within a single figure using subplots.

Here’s an example of creating multiple matplotlib pie charts using subplots:

import matplotlib.pyplot as plt

# Data for the pie charts
sizes1 = [30, 20, 25, 15, 10]
sizes2 = [35, 25, 20, 15, 5]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

# Create a figure with two subplots
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

# Create the first pie chart
ax1.pie(sizes1, labels=labels, colors=colors, autopct='%1.1f%%')
ax1.set_title('Pie Chart 1 - how2matplotlib.com')

# Create the second pie chart
ax2.pie(sizes2, labels=labels, colors=colors, autopct='%1.1f%%')
ax2.set_title('Pie Chart 2 - how2matplotlib.com')

plt.tight_layout()
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we create two pie charts side by side using subplots. This allows for easy comparison between different datasets or time periods.

Adding Data Labels to Matplotlib Pie Charts

While percentage labels are useful, sometimes you may want to display the actual data values on your matplotlib pie chart. This can provide more detailed information to your audience.

Here’s how to add data labels to a matplotlib pie chart:

import matplotlib.pyplot as plt

sizes = [300, 250, 200, 150, 100]
labels = ['Product A', 'Product B', 'Product C', 'Product D', 'Product E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

def make_autopct(values):
    def my_autopct(pct):
        total = sum(values)
        val = int(round(pct*total/100.0))
        return f'{pct:.1f}%\n({val:d})'
    return my_autopct

plt.pie(sizes, labels=labels, colors=colors, autopct=make_autopct(sizes))
plt.title('Matplotlib Pie Chart with Data Labels - how2matplotlib.com')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we define a custom function make_autopct that returns both the percentage and the actual value for each slice. This provides a more comprehensive view of the data.

Creating 3D Pie Charts with Matplotlib

While traditional 2D pie charts are effective, 3D pie charts can add an extra dimension of visual interest to your data visualization. Matplotlib allows you to create 3D pie charts using the mplot3d toolkit.

Here’s an example of creating a 3D matplotlib pie chart:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

# Pie chart data
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

# Create a figure and a 3D axis
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')

# Create the pie chart
def pie3d(sizes, labels, colors, angle):
    start_angle = 0
    for i in range(len(sizes)):
        end_angle = start_angle + sizes[i] / sum(sizes) * 360
        X = [0] + np.cos(np.radians(np.linspace(start_angle, end_angle, 100))).tolist()
        Y = [0] + np.sin(np.radians(np.linspace(start_angle, end_angle, 100))).tolist()
        Z = [0] * len(X)
        ax.plot_surface(np.array([X] * 2), np.array([Y] * 2), np.array([Z, [0.5] * len(Z)]), color=colors[i])
        ax.text(np.mean(X), np.mean(Y), 0.6, labels[i], ha='center', va='center')
        start_angle = end_angle

pie3d(sizes, labels, colors, angle=30)

ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(0, 1)
ax.set_title('3D Matplotlib Pie Chart - how2matplotlib.com')
ax.axis('off')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the mplot3d toolkit to create a 3D pie chart. The pie3d function plots each slice as a 3D surface, creating a visually striking representation of the data.

Animating Matplotlib Pie Charts

Adding animation to your matplotlib pie charts can create engaging and dynamic visualizations. This is particularly useful for showing changes in data over time or for presentations.

Here’s an example of creating an animated matplotlib pie chart:

import matplotlib.pyplot as plt
import matplotlib.animation as animation

# Data for the pie chart
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

fig, ax = plt.subplots()

def animate(i):
    ax.clear()
    explode = [0.1 if j == i % len(sizes) else 0 for j in range(len(sizes))]
    ax.pie(sizes, labels=labels, colors=colors, explode=explode, autopct='%1.1f%%', startangle=90)
    ax.set_title('Animated Matplotlib Pie Chart - how2matplotlib.com')
    ax.axis('equal')

ani = animation.FuncAnimation(fig, animate, frames=len(sizes), repeat=True, interval=1000)
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use Matplotlib’s animation module to create an animated pie chart. The animate function is called repeatedly, updating the exploded slice in each frame to create a rotating effect.

Handling Small Slices in Matplotlib Pie Charts

When dealing with datasets that include very small values, pie charts can become cluttered and hard to read. Matplotlib provides solutions to handle these small slices effectively.

Here’s an example of handling small slices in a matplotlib pie chart:

import matplotlib.pyplot as plt

sizes = [30, 25, 20, 15, 5, 3, 2]
labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc', '#ffcc66', '#99ccff']

def make_autopct(values):
    def my_autopct(pct):
        total = sum(values)
        val = int(round(pct*total/100.0))
        return f'{pct:.1f}%\n({val:d})' if pct > 5 else ''
    return my_autopct

plt.pie(sizes, labels=labels, colors=colors, autopct=make_autopct(sizes))
plt.title('Matplotlib Pie Chart Handling Small Slices - how2matplotlib.com')
plt.axis('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use a custom function to only display labels and values for slices that represent more than 5% of the total. This helps to reduce clutter and improve readability.

Creating Semi-Circle Pie Charts with Matplotlib

Sometimes, you might want to create a semi-circle or half pie chart for aesthetic reasons or to save space. Matplotlib allows you to easily create these variations of pie charts.

Here’s an example of creating a semi-circle matplotlib pie chart:

import matplotlib.pyplot as plt

sizes = [30, 25, 20, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90, counterclock=False)
plt.title('Semi-Circle Matplotlib Pie Chart - how2matplotlib.com')
plt.axis('equal')
plt.ylim(-0.5, 1)
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use the startangle parameter to start the first slice at the 3 o’clock position, and counterclock=False to draw the slices clockwise. The ylim parameter is used to show only the top half of the pie.

Combining Pie Charts with Other Plot Types in Matplotlib

Matplotlib’s flexibility allows you to combine pie charts with other types of plots, creating rich and informative visualizations. This can be particularly useful when you want to provide multiple perspectives on your data.

Here’s an example of combining a matplotlib pie chart with a bar chart:

import matplotlib.pyplot as plt

# Data for pie chart
pie_sizes = [30, 25, 20, 15, 10]
pie_labels = ['A', 'B', 'C', 'D', 'E']
pie_colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

# Data for bar chart
bar_labels = ['Category 1', 'Category 2', 'Category 3']
bar_sizes = [40, 35, 25]

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

# Create pie chart
ax1.pie(pie_sizes, labels=pie_labels, colors=pie_colors, autopct='%1.1f%%', startangle=90)
ax1.set_title('Pie Chart - how2matplotlib.com')
ax1.axis('equal')

# Create bar chart
ax2.bar(bar_labels, bar_sizes, color='#66b3ff')
ax2.set_title('Bar Chart - how2matplotlib.com')
ax2.set_ylabel('Values')

plt.tight_layout()
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we create a figure with two subplots: one for a pie chart and another for a bar chart. This combination allows for a more comprehensive view of the data.

Customizing the Aspect Ratio of Matplotlib Pie Charts

The aspect ratio of your matplotlib pie chart can significantly impact its appearance and readability. While pie charts are typically circular, you might want to adjust the aspect ratio for specific layout requirements.

Here’s an example of customizing the aspect ratio of a matplotlib pie chart:

import matplotlib.pyplot as plt

sizes = [30, 25, 20, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']

fig, ax = plt.subplots(figsize=(10, 6))
ax.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)
ax.set_title('Matplotlib Pie Chart with Custom Aspect Ratio - how2matplotlib.com')
ax.set_aspect('equal')
plt.show()

Output:

How to Create Stunning Matplotlib Pie Charts: A Comprehensive Guide

In this example, we use figsize=(10, 6) to create a rectangular figure, and ax.set_aspect('equal') to ensure that the pie chart remains circular within this rectangular frame.

Matplotlib pie charts Conclusion

Matplotlib pie charts are versatile tools for data visualization that offer a wide range of customization options. From basic pie charts to advanced techniques like nested charts, 3D representations, and animations, Matplotlib provides the flexibility to create stunning and informative visualizations.

By mastering the various aspects of matplotlib pie charts covered in this guide, you’ll be well-equipped to create compelling data visualizations that effectively communicate your insights. Remember to consider your audience and the nature of your data when choosing how to present your pie charts, and don’t hesitate to experiment with different styles and combinations to find the most effective representation for your data.

Whether you’re creating simple charts for quick data analysis or developing complex visualizations for presentations and reports, the techniques covered in this guide will help you make the most of matplotlib pie charts in your data visualization projects.

Pin It