Matplotlib文本框文字格式设置及空格缺失问题求助
解决Matplotlib文本框行内粗细不同及空格问题
问题分析
- 原代码全局设置
fontweight="bold",导致所有行都加粗,无法实现第一行加粗、第二行不加粗的需求。 - 第二行使用数学模式(
$...$),数学模式会自动忽略空格,因此出现文字间无空格的问题。
解决方案
利用Matplotlib支持的富文本格式控制单一行的加粗,同时避免在普通文本中使用数学模式以保留空格:
import matplotlib.pyplot as plt fig, ax = plt.subplots() # 用\textbf{}包裹第一行实现加粗,第二行直接写普通文本(支持Unicode符号≥) textstr = r"\textbf{Greater Sample Size:}\nNo. of Sites ≥ 3" props = dict(boxstyle='round', facecolor='wheat', alpha=0.5) # 移除全局fontweight参数,由文本内的格式命令控制粗细 ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14, verticalalignment='top', bbox=props, usetex=False) plt.show()
补充说明
- 如果你的环境已启用LaTeX(设置
usetex=True),也可以将第二行改为数学模式并手动添加空格,写法如下(需系统安装LaTeX环境):textstr = r"\textbf{Greater Sample Size:}\n$No.\ of\ Sites \geq 3$" ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14, verticalalignment='top', bbox=props, usetex=True) - 默认
usetex=False时,Matplotlib内置渲染器已支持\textbf{}这类基础格式命令,无需额外依赖LaTeX。
内容的提问来源于stack exchange,提问作者Aymeric06
相关产品推荐
相关产品推荐

