标签中的下划线不呈现

Jam*_*ght 1 python matplotlib

在标签中使用下划线实际上并不创建下划线。我不确定发生了什么事

最小工作示例:

variable = range(5)
plt.plot(variable, variable, label='test_underscore')
plt.plot(variable, variable, label='escape\_underscore')
plt.plot(variable, variable, label=r'rawtest_underscore')
plt.plot(variable, variable, label=r'rawescape\_underscore')
_=plt.legend()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑:

这是我的rcParams

plt.rcParams.update({
            'font.family': 'serif',
            'font.serif': 'cmr10',
            'mathtext.fontset': 'cm',
            'axes.unicode_minus': False,
            'font.size': 11,
            'figure.dpi': 200,
            'lines.linewidth': 0.5,
            'axes.grid': True
})
Run Code Online (Sandbox Code Playgroud)

当我在没有这个的情况下运行时,它可以正常工作: 在此输入图像描述

Jam*_*ght 5

罪魁祸首就是字体cmr10。这是与 matplotlib 捆绑的字体,但它实际上不包含下划线字符。来自 FontForge:

在此输入图像描述

这个网站上,下划线的unicode字符是U+005f,我们可以从上图中看到它被映射到上点。这就是为什么我们在标签中看到的是过点而不是下划线。我将提交有关该问题的 matplotlib 问题。希望我们能够正确修复字体。

编辑:github问题在这里(#16995)

解决方案:

事实证明,TeX 最初并没有下划线的编码。

所以唯一的解决办法就是使用不同的字体。