Complete Guide to Adding Main Title and Subtitle to Graphs in Matplotlib

Nov 24, 2025 · Programming · 7 views · 7.8

Keywords: Matplotlib | Data Visualization | Graph Titles

Abstract: This article provides a comprehensive guide on adding main titles and subtitles to Matplotlib graphs, focusing on the flexible figtext function solution. By comparing different methods and their advantages, it offers complete code examples and best practices for creating professional data visualizations.

Introduction

In data visualization, the title system of graphs is crucial for conveying information effectively. A clear combination of main title and subtitle can effectively guide readers to understand the core content and context of the graph. Matplotlib, as the most popular plotting library in Python, provides multiple approaches to achieve this functionality.

Problem Analysis

Many users discover that the standard title() function in Matplotlib can only set title text with a single font size. When needing to set a larger 18pt font for the main title while using a smaller 10pt font for the subtitle, the simple title() function proves insufficient. This necessitates exploration of more flexible solutions.

Core Solution: Using figtext Function

Based on best practices, the most recommended solution involves using Matplotlib's figtext() function. This approach offers maximum flexibility, allowing users precise control over text position, size, and alignment.

Basic Implementation

Here is the basic code example using the figtext() function:

import matplotlib.pyplot as plt

# Set chart area
plt.axes([0.1, 0.1, 0.8, 0.7])

# Add main title
plt.figtext(0.5, 0.9, 'Main Analysis Results', fontsize=18, ha='center')

# Add subtitle
plt.figtext(0.5, 0.85, 'Detailed analysis report based on 2023 sales data', fontsize=10, ha='center')

plt.show()

Parameter Details

Key parameters of the figtext() function include:

Alternative Methods Comparison

Method 1: suptitle and title Combination

Another common approach combines suptitle() and title() functions:

plt.suptitle('Main Title', fontsize=18, y=0.95)
plt.title('Subtitle', fontsize=10)
plt.show()

The advantage of this method is code simplicity, but careful adjustment of the y parameter is needed to avoid text overlap.

Method 2: Using Newline Character

The simplest solution uses newline characters in title():

plt.title('Main Title\nSubtitle', fontsize=12)
plt.show()

While straightforward, this method cannot set different font sizes for the two lines of text.

Best Practices Recommendations

Position Adjustment Techniques

When using figtext(), optimize text layout by adjusting the y parameter:

# Optimized position settings
plt.figtext(0.5, 0.92, 'Main Title', fontsize=18, ha='center')
plt.figtext(0.5, 0.88, 'Subtitle', fontsize=10, ha='center')

Font and Style Configuration

Beyond font size, configure other text properties:

plt.figtext(0.5, 0.9, 'Main Title', fontsize=18, ha='center', weight='bold')
plt.figtext(0.5, 0.85, 'Subtitle', fontsize=10, ha='center', style='italic')

Practical Application Example

Here is a complete data visualization example demonstrating title system application in real scenarios:

import matplotlib.pyplot as plt
import numpy as np

# Generate sample data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Create chart
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b-', linewidth=2)

# Set axis labels
plt.xlabel('Time (seconds)', fontsize=12)
plt.ylabel('Amplitude', fontsize=12)

# Add title system
plt.figtext(0.5, 0.95, 'Sine Wave Signal Analysis', fontsize=20, ha='center', weight='bold')
plt.figtext(0.5, 0.90, 'Frequency: 1Hz, Sampling Rate: 10Hz', fontsize=12, ha='center')

plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

Common Issues and Solutions

Text Overlap Problems

When main title and subtitle overlap, resolve by:

Multilingual Support

For titles containing Chinese or other non-ASCII characters, ensure font support:

plt.rcParams['font.sans-serif'] = ['SimHei']  # Set Chinese font
plt.figtext(0.5, 0.9, 'Chinese Title', fontsize=18, ha='center')

Conclusion

By utilizing Matplotlib's figtext() function, users can flexibly create main title and subtitle systems with different font sizes for their graphs. This approach not only addresses basic title requirements but also provides rich customization options, making data visualization results more professional and readable. In practical applications, it's recommended to select appropriate parameter configurations based on specific needs and combine with other layout optimization techniques to create high-quality graph title systems.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.