
本文介绍如何在 matplotlib 的 `set_title()` 中对标题的不同部分分别设置字体粗细(如前半部分为常规字体、后半部分为粗体),核心方法是利用 matplotlib 内置的 mathtext 语法(类似 latex)实现局部格式化。
Matplotlib 原生不支持对单个 set_title() 字符串中的不同子串独立设置 fontweight,但可通过其 MathText 渲染引擎(非完整 LaTeX,但兼容常用数学标记)实现局部样式控制。其中 $\mathbf{...}$ 是最简洁可靠的粗体标记方式(注意:\bf{...} 在新版 Matplotlib 中已弃用,推荐使用 \mathbf{...} 或更通用的 \textbf{...} 配合 mathtext.fontset 设置)。
✅ 正确写法(推荐):
ax.set_title(f'{feature}\n$\\mathbf{{{int(player_value)}}}$',
color='#100097', loc='right')⚠️ 注意事项:
- 双反斜杠 \\ 是 Python 字符串中转义单反斜杠 \ 所必需的;
- {int(player_value)} 外层花括号需成对出现,确保 MathText 正确解析内容(尤其当值含数字或符号时);
- 若需对非数字文本(如带空格的字符串)加粗,应改用 $\\textbf{{{text}}}$,例如:f'{feature}\n$\\textbf{{Player: {player_name}}}$';
- 默认 MathText 字体可能与主标题字体不一致,如需统一风格,可全局配置:
plt.rcParams['mathtext.fontset'] = 'stix' # 或 'dejavusans', 'cm'
? 进阶技巧:若需更复杂排版(如颜色、字号差异),可组合使用 $\\color{{red}}{\\mathbf{{value}}}$,但需确保 mathtext 支持对应命令(推荐优先测试基础 \mathbf)。
综上,无需拆分标题、无需多行 text() 调用——一行 MathText 表达式即可优雅实现「部分粗体」需求,兼顾简洁性与可维护性。










