Matplotlib绘图坐标轴标题设置粗体时下标未加粗问题求解
问题原因
下标无法随正文同步加粗的核心原因:\rm是旧式数学字体命令,不会继承Matplotlib为坐标轴标题设置的fontweight='bold'属性,会默认调用常规字重的罗马字形渲染包裹内容,最终出现下标和其余文本字重不一致的问题。
可行解决方案
根据你当前的渲染场景选择对应写法即可:
- 使用Matplotlib默认mathtext渲染(未开启LaTeX原生渲染):直接将下标部分的
\rm替换为\mathbf,手动指定数学环境内的文本为粗体,无需额外修改全局配置,代码如下:
plt.ylabel(r'PC$_{\mathbf{SD}}$ (A)', fontsize=22, fontweight='bold')
- 需要全局统一数学文本样式、不想逐个标记粗体:提前修改mathtext相关配置,让数学环境字体自动继承正文的字重属性:
import matplotlib.pyplot as plt # 配置mathtext字体集匹配正文,开启字重继承 plt.rcParams['mathtext.fontset'] = 'dejavusans' plt.rcParams['mathtext.default'] = 'bf' # 原有绘图代码无需额外修改下标写法,推荐将旧式\rm替换为兼容性更好的\mathrm plt.ylabel(r'PC$_{\mathrm{SD}}$ (A)', fontsize=22, fontweight='bold')
注意:
\rm属于已淘汰的旧式字体命令,在Matplotlib mathtext和LaTeX中都不会主动继承上下文的字体族、字重属性,极易出现字体样式不统一的问题,日常使用推荐替换为标准命令\mathrm。
- 已开启
text.usetex=True原生LaTeX渲染的场景:使用LaTeX原生粗体命令包裹所有需要加粗的内容:
plt.ylabel(r'$\textbf{PC}_{\textbf{SD}}$ (A)', fontsize=22, fontweight='bold')
内容的提问来源于stack exchange,提问作者Hamed
相关产品推荐
相关产品推荐

