You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决matplotlib的ax.text()方法中下划线被识别为斜体下标的问题

问题原因

  1. 下划线被识别为下标不是bug:你将变量放在了$符号包裹的区间内,这部分内容会被matplotlib默认识别为LaTeX数学模式,数学模式中下划线本身就是下标语法,属于正常特性。
  2. 终端斜体转义码无效:\033[3m是终端专用的ANSI转义序列,matplotlib的画布渲染引擎不支持这类转义,所以不会生效。

解决方案

不需要修改全局rc配置,可通过以下两种方式按需调整:

方案1:无需LaTeX渲染的场景

直接删除$符号,普通文本模式下不会自动解析下划线为下标,如需设置整段文本斜体,直接传fontstyle参数即可:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
var = 'Hello_12'
ax.text(0.5, 0.5, f"Dataset: {var}", fontstyle='italic')
plt.show()

如果只需要部分文本为斜体,使用mathtext语法包裹需要斜体的内容即可:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
var = 'Hello_12'.replace('_', r'\_')
# 仅var部分为斜体,其余文本保持默认样式
text = f"Dataset: $\mathit{{{var}}}$"
ax.text(0.5, 0.5, text)
plt.show()

方案2:必须保留LaTeX数学模式的场景

对字符串中的下划线做转义处理,将_替换为\_即可正常显示下划线:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
var = 'Hello_12'.replace('_', r'\_')
text = f"Dataset: ${var}$"
ax.text(0.5, 0.5, text)
plt.show()

内容的提问来源于stack exchange,提问作者Miguel Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:15:03