使用usetex=True时如何将X轴刻度标签设置为粗体
解决Matplotlib启用usetex后X轴刻度粗体不生效的问题
当启用rc("text", usetex = True)后,Matplotlib会把所有文本交给LaTeX引擎渲染,此时通过set_xticklabels的weight='bold'参数设置粗体不会生效——这个参数是Matplotlib原生样式控制,LaTeX不识别它。
最简单的修改方式是直接用LaTeX的粗体命令\textbf{}包裹每个刻度标签文本:
把原来的这一行:
ax.set_xticklabels(ax.get_xticks(), weight='bold')
替换为:
ax.set_xticklabels([r"\textbf{%d}" % tick for tick in ax.get_xticks()])
修改后的完整代码
import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib import rc rc("text", usetex = True) fig, ax = plt.subplots(figsize = (6, 3), tight_layout = True) ax.set_yticks([i for i in range(0, 10+1, 1)]) ax.set_xticks([i for i in range(0, 100+1, 10)]) ax.tick_params(axis = "both", labelsize = 15) # 用LaTeX粗体命令包裹刻度值 ax.set_xticklabels([r"\textbf{%d}" % tick for tick in ax.get_xticks()]) ax.set_title(r"$\underline{\textbf{Proper}}$") plt.show()
原理很直接:启用usetex后,每个刻度标签都会被LaTeX编译,\textbf{}是LaTeX原生的粗体命令,能让LaTeX正确渲染出粗体数字刻度。如果需要对Y轴刻度做同样处理,用相同方式修改set_yticklabels即可。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

