pin_drop当前位置:知识文库 ❯ 图文
matplotlib标题与标签设置详解 - Python图表文本自定义
概述
标题和标签是图表的重要组成部分,为读者提供图表主题和坐标轴含义的说明。matplotlib提供了set_title()、set_xlabel()、set_ylabel()等函数来设置这些文本元素,支持字体大小、颜色、位置、数学公式等丰富的自定义选项。
好的标题和标签设置能够让图表在学术论文、商业报告和演示文稿中脱颖而出。它们不仅是装饰,更是图表传达信息的关键通道,帮助读者快速理解图表的核心内容。
语法与参数说明
基本语法
代码示例
ax.set_title(label, fontsize=12, **kwargs)
ax.set_xlabel(xlabel, fontsize=12, **kwargs)
ax.set_ylabel(ylabel, fontsize=12, **kwargs)
fig.suptitle(title, fontsize=14, **kwargs)通用文本参数
set_title特有参数
返回值
返回Text对象,可用于后续修改,如title.set_color('red')。
代码示例
示例1:基本标题与标签
为图表设置基本的标题和坐标轴标签,这是最常见的用法。
代码示例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, np.sin(x), 'b-', linewidth=2)
# 设置标题和标签
ax.set_title('Sine Function')
ax.set_xlabel('x (radians)')
ax.set_ylabel('y = sin(x)')
plt.savefig('basic_labels.png', dpi=100, bbox_inches='tight')
print("基本标题标签已保存")输出:
代码示例
基本标题标签已保存示例2:样式自定义与数学公式
演示自定义标题样式和使用LaTeX语法渲染数学公式,适合学术论文场景。
代码示例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5, 100)
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(x, np.exp(-x**2), 'b-', linewidth=2)
# 自定义标题样式
ax.set_title('Gaussian Distribution',
fontsize=16, fontweight='bold', color='#333333',
loc='left', pad=15)
# 数学公式标签(LaTeX语法)
ax.set_xlabel(r'$x$', fontsize=14)
ax.set_ylabel(r'$f(x) = e^{-x^2}$', fontsize=14, color='blue')
# 副标题
ax.text(0.5, 0.92, r'$\mu=0, \sigma=1$',
transform=ax.transAxes, ha='center', fontsize=12,
style='italic', color='gray')
ax.grid(True, alpha=0.3)
plt.savefig('styled_labels.png', dpi=100, bbox_inches='tight')
print("样式标签已保存")输出:
代码示例
样式标签已保存示例3:子图标题与总标题
在多子图布局中,为每个子图设置独立标题,并为整个Figure添加总标题。
代码示例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
# 各子图标题
axes[0, 0].plot(x, np.sin(x), 'b-')
axes[0, 0].set_title('sin(x)', fontsize=12, fontweight='bold')
axes[0, 1].plot(x, np.cos(x), 'r-')
axes[0, 1].set_title('cos(x)', fontsize=12, fontweight='bold')
axes[1, 0].plot(x, np.tan(x), 'g-')
axes[1, 0].set_title('tan(x)', fontsize=12, fontweight='bold')
axes[1, 0].set_ylim(-5, 5)
axes[1, 1].plot(x, np.sin(x) + np.cos(x), 'm-')
axes[1, 1].set_title('sin(x) + cos(x)', fontsize=12, fontweight='bold')
# 共享坐标轴标签
for ax in axes[1]:
ax.set_xlabel('x (radians)', fontsize=11)
for ax in axes[:, 0]:
ax.set_ylabel('y', fontsize=11)
# 总标题
fig.suptitle('Trigonometric Functions Overview',
fontsize=16, fontweight='bold', color='#2196F3', y=0.98)
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.savefig('subplot_titles.png', dpi=100, bbox_inches='tight')
print("子图标题已保存")输出:
代码示例
子图标题已保存实际应用场景
-
学术论文:使用LaTeX数学公式作为坐标轴标签,符合学术出版规范
-
报告展示:使用suptitle为整个图表组添加总标题,增强整体感
-
演示文稿:使用大号加粗标题增强视觉冲击力,吸引观众注意力
注意事项
注意:LaTeX公式需使用原始字符串r'$...$',避免转义字符冲突
注意:suptitle()添加的总标题可能被子图遮挡,需调整tight_layout的rect参数或使用y参数上移
注意:xlabel/ylabel的标签文字过长时,可使用rotation旋转或换行(\n)避免重叠
文本函数对比
小结
-
set_title()设置子图标题,suptitle()设置Figure总标题
-
set_xlabel/set_ylabel设置坐标轴标签,支持LaTeX数学公式
-
fontsize控制大小,fontweight控制粗细,color控制颜色
-
多子图共享标签时,只为边缘子图设置,避免重复
练习题
练习1
绘制y=x^2曲线,设置标题为"Quadratic Function",X轴标签为"x",Y轴标签为"y = x^2"
练习2
绘制正态分布曲线,使用LaTeX公式作为标题和坐标轴标签
练习3
创建2x2子图,为每个子图设置不同样式的标题,并添加总标题
常见问题
如何在标题中使用中文?
matplotlib默认不支持中文,需要设置字体。可以使用plt.rcParams['font.sans-serif'] = ['SimHei']设置黑体,或使用fontfamily参数指定中文字体。Windows系统常用'SimHei'或'Microsoft YaHei',macOS常用'Arial Unicode MS'。
suptitle和set_title有什么区别?应该用哪个?
suptitle()作用于整个Figure,适合为多子图添加总标题;set_title()作用于单个Axes(子图)。如果只有一个子图,用set_title()即可;如果有多个子图且需要总标题,可以同时使用两者。
如何使用LaTeX语法渲染数学公式?
在文本中使用r'$...$'包裹LaTeX表达式,如r'$y = \alpha x^2 + \beta x + \gamma$'。注意使用原始字符串r''避免转义问题。如果需要完整LaTeX渲染,可以设置text.usetex=True,但这需要系统安装LaTeX。
如何调整标题与图表之间的距离?
set_title()使用pad参数调整间距(默认6.0),如set_title('Title', pad=20)增大间距。suptitle()使用y参数控制垂直位置(默认约0.98),y值越大越靠近顶部。也可以使用plt.title()的y参数直接设置绝对位置。
如何在图表中添加带箭头的注释?
使用ax.annotate()函数,基本语法为ax.annotate('注释文本', xy=(箭头位置x, y), xytext=(文本位置x, y), arrowprops=dict(arrowstyle='->'))。支持自定义箭头样式、颜色、曲率等。
本文涉及AI创作
内容由AI创作,请仔细甄别