如何在Matplotlib的ax.text中实现逗号的上标/下标显示?
在Matplotlib的ax.text中实现上下标逗号的方法
方法1:使用LaTeX语法(推荐,兼容性最好)
Matplotlib支持内嵌LaTeX格式的文本,直接用$包裹公式,通过^{内容}定义上标、_{内容}定义下标,逗号直接放入即可,完全不会出现字符显示异常的问题。
示例代码:
import matplotlib.pyplot as plt fig, ax = plt.subplots() # 呈现 ²,⁰B ax.text(0.5, 0.7, r'$^2{,}^0$B', fontsize=16) # 呈现 B₂,₀ ax.text(0.5, 0.3, r'B$_{2{,}0}$', fontsize=16) plt.show()
- 用
r前缀声明原始字符串,避免转义字符干扰; - 如果你的Matplotlib默认未开启LaTeX渲染,可提前添加配置:
现在多数环境的默认配置已支持嵌入式LaTeX,无需额外设置也能正常渲染。plt.rcParams['text.usetex'] = True
方法2:使用兼容的Unicode上下标逗号字符
你之前用的⸴是表意文字专用逗号,多数字体不支持,才会显示方块。可以改用字体支持的上下标逗号Unicode字符,比如:
- 上标逗号:
ᵎ(Unicode U+1D4E) - 下标逗号:
₍(Unicode U+208D)
示例代码:
import matplotlib.pyplot as plt fig, ax = plt.subplots() # 呈现 ²,⁰B ax.text(0.5, 0.7, '²ᵎ⁰B', fontsize=16, fontfamily='DejaVu Sans') # 呈现 B₂,₀ ax.text(0.5, 0.3, 'B₂₍₀', fontsize=16, fontfamily='DejaVu Sans') plt.show()
注意:这种方式依赖字体对特定Unicode字符的支持,若换用其他字体仍可能出现显示异常,因此不如LaTeX方法通用。
内容的提问来源于stack exchange,提问作者Laz
相关产品推荐
相关产品推荐

